私は実験的な言語のインタプリタを書いています。言語の主な構成要素の 3 つは、定義、ステートメント、および式です。定義にはステートメントと式を含めることができ、ステートメントには定義と式を含めることができ、1 種類の式にステートメントを含めることができます。パターン マッチングを簡単に使用できるように、ユニオン型を使用してこれらすべてを表します。理想的には、これらのコードを別のファイルに配置したいと考えていますが、OMake は循環依存の問題について不平を言っています。私の知る限り、モジュール間の循環型定義は許可されていません。
これを解決するために私が知っている唯一の方法は、3 つの型すべてを一度に定義することです。
type defn = ...
and stmt = ...
and expr = ...
これには、型のすべてのコードが同じファイルにある必要があるようです。これを回避する方法はありますか?コード内の循環定義をどのように処理しますか?