SML 関数を呼び出す際の優先順位の問題と思われるものを取得しています。
fun substitute v new (typevar q) = ...
そして、私は別の関数からこれを呼び出しています:
fun new_type_vars (typevar v) non_gens =
substitute v new_var() (typevar v)
しかし、私はエラーが発生します:
C:/sml/type_checker.sml:22.48-23.44 エラー: 演算子とオペランドが一致しません [タイコンの不一致] オペレーター ドメイン: type_exp オペランド: 単位 -> 文字列 式で: (置換 v) new_var
これは、(代わりに v) を呼び出し、その呼び出しの結果を引数 new_var で呼び出そうとしていることを示唆しているようです。
全体に括弧を追加しようとしましたが、それは役に立ちません。引数の周りに括弧を追加する(v new_var...)
と、v が new_var の関数アプリケーションであると見なされるようになります。この関数呼び出しで何が起こっているのでしょうか?