Ocaml bardzo silnie wspiera programowanie oparte o kontrakty (ang. Design by contract).
Rzeczywiście, każdy większy program w Ocamlu podzielony jest na moduły, z których każdy składa się ze specyfikacji
(czyli kontraktu, umieszczonego w pliku *.mli
) i implementacji (w pliku *.ml
).
Przykładowo, plik.mli może wyglądać tak:
type typ val wartosc : typ val operacja : typ -> typ