标签: sml
我的foo函数定义如下
fun foo f = f 5;
如何推断出函数类型?
答案 0 :(得分:2)
我们可以看到f必须是一个函数。我们还看到,f取整数作为输入,因为我们调用f 5。因此,f必须包含int -> 'a类型。
f
f 5
int -> 'a
foo然后获得int -> 'a,并产生'a,产生:foo : (int -> 'a) -> 'a。
foo
'a
foo : (int -> 'a) -> 'a
答案 1 :(得分:0)
SML使用此算法的变体进行类型推断:
http://en.wikipedia.org/wiki/Hindley%E2%80%93Milner