Redundanz in OCaml type-Angabe (ml/mli)

Ich versuche zu verstehen, eine bestimmte Sache zu ocaml-Modulen und deren Zusammenstellung:

bin ich gezwungen zu deklarieren Typen schon erklärt in einem .mli innerhalb der spezifischen .ml Implementierungen?

Nur um ein Beispiel zu geben:

(* foo.mli *)
type foobar = Bool of bool | Float of float | Int of int

(* foo.ml *)
type baz = foobar option

Diese, nach meiner normalen Art des Denkens über interfaces, Implementierungen, sollte ok sein, aber es sagt

Error: Unbound Typ-Konstruktor foobar

beim Versuch zu kompilieren mit

ocamlc -c foo.mli
ocamlc -c foo.ml

Natürlich der Fehler verschwindet, wenn ich erkläre foobar innen foo.ml auch, aber es scheint ein komplexer Weg, da ich ständig Dinge, die synchronisiert auf jede Veränderung.

Gibt es eine Möglichkeit, diese Redundanz vermeiden oder bin ich gezwungen zu deklarieren Typen jedes mal?

Vielen Dank im Voraus

InformationsquelleAutor Jack | 2010-07-13
Schreibe einen Kommentar