データ型宣言の withtype 句で多くの型を定義するアプリケーションを作成しています。次のコード スニペットはそれを示しています。
datatype ta = A
withtype tb = int
and tc = tb
smlnjは成功しますが、 mltonはこのコードのコンパイルに失敗します。
$ mlton -stop o test.sml
Error: test.sml 3.15.
Undefined type tb.
compilation aborted: parseAndElaborate reported errors
mlton-20100608 と smlnj-110.71 を使用しています。
これはmltonのバグですか?
この種の宣言なしで続行する方法がわかりません。相互に再帰的なデータ型と型のセットです。
このアイデアは、Andrew Appel が彼の著書Modern Compiler Implementation in MLで Tiger 言語用に提案した抽象構文ツリー型から来ています。ファイル内の 98 ページabsyn.sml