# Chapter 17: Extraction of programs in Objective Caml and Haskell

Jean-Christophe Filliātre and Pierre Letouzey
The status of extraction is experimental.
We present here the Coq extraction commands, used to build certified and relatively efficient functional programs, extracting them from the proofs of their specifications. The functional languages available as output are currently Objective Caml and Haskell. In the following, ``ML'' will be used (abusively) to refer to any of the two.

##### Differences with old versions.

The current extraction mechanism is new for version 7.0 of Coq. In particular, the Fw toplevel used as an intermediate step between Coq and ML has been withdrawn. It is also not possible any more to import ML objects in this Fw toplevel. The current mechanism also differs from the one in previous versions of Coq: there is no more an explicit toplevel for the language (formerly called Fml).

- 17.1 Generating ML code
- 17.2 Extraction options
- 17.3 Differences between Coq and ML type systems
- 17.4 Some examples