title: Is it possible to do compile-time execution in OCaml, similar to C++ template metaprogramming?
body: <p>In C++, recursive templates and constant values as template parameters allows to do interesting examples of code generation and compile-time execution, such as the <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Template_metaprogramming#Compile-time_class_generation" rel="nofollow">factorial</a>.</p>
  
  <p>Is it possible to do similar things in OCaml, using parametric polymorphism, functors, or other concepts?</p>