猜测定点组合器的类型
Guessing the type of fixed-point combinator
我的问题与 "fixed point combinator" 有关。根据 this Wikipedia page section 一个函数 fix
这样
fix f = f (fix f)
是类型(或至少可以是类型)
(a -> a) -> a
谁能解释一下为什么?
从定义开始
fix f = f (fix f)
因为它需要一个参数,fix
必须有一个类似于
的类型
fix :: x -> y
它将它的论点应用于某事,所以实际上
fix :: (p -> q) -> r
它实际上将其参数应用于 fix f
,所以
fix :: (r -> q) -> r
最后的结果其实就是这次申请的结果,所以
fix :: (r -> r) -> r
我的问题与 "fixed point combinator" 有关。根据 this Wikipedia page section 一个函数 fix
这样
fix f = f (fix f)
是类型(或至少可以是类型)
(a -> a) -> a
谁能解释一下为什么?
从定义开始
fix f = f (fix f)
因为它需要一个参数,fix
必须有一个类似于
fix :: x -> y
它将它的论点应用于某事,所以实际上
fix :: (p -> q) -> r
它实际上将其参数应用于 fix f
,所以
fix :: (r -> q) -> r
最后的结果其实就是这次申请的结果,所以
fix :: (r -> r) -> r