次のコードを検討してください。
fun g(a) =
let fun h(b)=g(a)
in h end;
SMLで実行すると、次のようになります。
- fun g(a) =
= let fun h(b)=g(a)
= in h end;
stdIn:55.5-57.10 Error: right-hand-side of clause doesn't agree with function re
sult type [circularity]
expression: 'Z -> 'Y
result type: 'Y
in declaration:
g = (fn a => let val <binding> in h end)
ここで問題を理解することはできません:g(a)
return h
、しかし宣言に特定の戻り値が表示されfun g(a)
ない(つまり、のようなものは何も
ありませんfun g(a):int
)、なぜエラーですか?
ありがとう