是两种类型:int -> int -> int
和int -> (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] 删除。
我来说两句