猜测定点组合的类型

时间:2016-05-04 21:01:02

标签: haskell functional-programming fixed-point

很抱歉这个问题,但我刚开始学习Haskell ... 我的问题与"定点组合器" ...

有关

根据this wikipedia page section功能fix

fix f = f (fix f)

属于(或至少可以是类型)

(a -> a) -> a

有人能解释我为什么吗?

谢谢!

你是否有任何指针(网页,书籍......)解释如何从定义中猜出函数的类型?

1 个答案:

答案 0 :(得分:6)

从定义

开始
fix f = f (fix f)

由于需要参数,fix必须具有类似

的类型
fix :: x -> y

它将其论证应用于某事,实际上

fix :: (p -> q) -> r

它实际上将其参数应用于fix f,所以

fix :: (r -> q) -> r

最终结果实际上是此应用程序的结果,所以

fix :: (r -> r) -> r