1

我的问题与“定点组合器”有关。根据this Wikipedia page section的功能fix

fix f = f (fix f)

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

(a -> a) -> a

有人可以解释我为什么吗?

4

1 回答 1

6

从定义开始

fix f = f (fix f)

因为它需要一个参数,所以fix必须有一个看起来像的类型

fix :: x -> y

它将它的论点应用于某事,所以事实上

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

它实际上将它的论点应用于fix f,所以

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

最终的结果其实就是这个应用的结果,所以

fix :: (r -> r) -> r
于 2016-05-04T22:08:31.867 回答