"MetaOCaml is a multi-stage extension of the OCaml programming language, and provides three basic constructs called Brackets, Escape, and Run for building, combining, and executing future-stage computations, respectively. ... MetaOCaml is a compiled dialect of MetaML." - from the MetaOCaml home page
MetaOcaml is a language based on OCaml that provides additional support for metaprogramming. It works with the concept of "staged computing," where each stage is more abstract than the stage below it. For example, most programming languages produce only single-stage programs, but a two stage program would be a program that takes some input and uses that to generate a single-state program. Related in some ways to macros, but with a type system. MetaOCaml includes a type system that is stage-aware.
The MetaOCaml homepage is http://www.metaocaml.org/