Ich schreibe einen Interpreter für eine experimentelle Sprache. Drei der wichtigsten Konstrukte der Sprache sind Definitionen, Anweisungen und Ausdrücke. Definitionen können Anweisungen und Ausdrücke enthalten, Anweisungen können Definitionen und Ausdrücke enthalten und eine Art von Ausdruck kann Anweisungen enthalten. Ich vertrete alle diese mit Union-Typen, so dass ich leicht Mustererkennung auf ihnen verwenden kann. Im Idealfall möchte ich den Code für diese in verschiedenen Dateien ablegen, aber OMake beschwert sich über zirkuläre Abhängigkeitsprobleme. Soweit ich weiß, sind zirkuläre Typdefinitionen in Modulen nicht erlaubt.Umgang mit zirkulären Abhängigkeiten in OCaml
Der einzige Weg, ich weiß, das zu lösen ist, alle drei Typen auf einmal zu definieren:
type defn = ...
and stmt = ...
and expr = ...
es so den gesamten Code erfordert für die Typen in der gleichen Datei zu sein scheint. Gibt es einen Weg dazu? Wie gehen Sie mit zirkulären Definitionen in Ihrem Code um?