如何获得`int->(int-> int)`?

杰克逊故事

是两种类型:int -> int -> intint -> (int -> int)相同吗?

如果我写了let f x = fun y -> x + y + 1,top返回int -> int -> int但是我想要的是一个将int作为参数的函数,然后返回一个也需要int并返回int的函数,即int -> (int -> int)

有没有办法做到这一点?

同样对于(’a * ’b -> ’c) -> (’a -> ’b -> ’c),我写了let f g = fun a b -> g (a,b),但是返回了(’a * ’b -> ’c) -> ’a -> ’b -> ’c,括号被消除了。但为什么?

如果返回一个新函数作为结果,它将继续被咖喱吗?

卡卡杜

通常,在lambda演算中,所有函数都有1个参数。具有两个参数(不是元组)的函数是具有1个参数并返回另一个函数的函数。如果从这个角度看问题,您将理解这->是正确的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章