Haskell 猜测不动点组合子的类型

Haskell 猜测不动点组合子的类型,haskell,functional-programming,fixpoint-combinators,Haskell,Functional Programming,Fixpoint Combinators,我的问题与“不动点组合器”有关。根据函数修复,以便 fix f = f (fix f) 属于类型(或至少可以属于类型) 有人能解释一下原因吗?从定义开始 fix f = f (fix f) 由于它接受一个参数,fix必须具有如下类型 fix :: x -> y 它把它的论点应用到某件事上,所以事实上 fix :: (p -> q) -> r 它实际上将其参数应用于修复f,因此 fix :: (r -> q) -> r 最终的结果实际上就是这个应用程序的结果

我的问题与“不动点组合器”有关。根据函数
修复
,以便

fix f = f (fix f)
属于类型(或至少可以属于类型)


有人能解释一下原因吗?

从定义开始

fix f = f (fix f)
由于它接受一个参数,
fix
必须具有如下类型

fix :: x -> y
它把它的论点应用到某件事上,所以事实上

fix :: (p -> q) -> r
它实际上将其参数应用于
修复f
,因此

fix :: (r -> q) -> r
最终的结果实际上就是这个应用程序的结果,所以

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

从定义开始

fix f = f (fix f)
由于它接受一个参数,
fix
必须具有如下类型

fix :: x -> y
它把它的论点应用到某件事上,所以事实上

fix :: (p -> q) -> r
它实际上将其参数应用于
修复f
,因此

fix :: (r -> q) -> r
最终的结果实际上就是这个应用程序的结果,所以

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

你读过《谢谢古万特》吗?我看过,但从我的理解来看,这并不是我所要求的。。。我想要的是一个分析性的答案或一个解决这类问题的一般方法的要点…
fixf
不是
f
。这是
f(fix f)
。你说得对。对不起,我发问题时有一个打字错误。我纠正了…你读了吗?谢谢古万特,我看过了,但从我的理解来看,这并不完全是我所要求的。。。我想要的是一个分析性的答案或一个解决这类问题的一般方法的要点…
fixf
不是
f
。这是
f(fix f)
。你说得对。对不起,我发问题时有一个打字错误。我纠正了。。。