如何在SML中推导出函数类型(fun foo f = f 5;)

时间:2013-09-16 23:02:49

标签: sml

我的foo函数定义如下

fun foo f = f 5;

如何推断出函数类型?

2 个答案:

答案 0 :(得分:2)

我们可以看到f必须是一个函数。我们还看到,f取整数作为输入,因为我们调用f 5。因此,f必须包含int -> 'a类型。

foo然后获得int -> 'a,并产生'a,产生:foo : (int -> 'a) -> 'a

答案 1 :(得分:0)

SML使用此算法的变体进行类型推断:

http://en.wikipedia.org/wiki/Hindley%E2%80%93Milner