god*_*dot 1 haskell functional-programming fixpoint-combinators
很抱歉这个问题,但我刚开始研究Haskell ...我的问题与"定点组合"有关...
根据此维基百科页面部分功能fix,使得
fix f = f (fix f)
Run Code Online (Sandbox Code Playgroud)
是类型(或至少可以是类型)
(a -> a) -> a
Run Code Online (Sandbox Code Playgroud)
有人能解释一下为什么吗?
谢谢 !
您是否还有任何指针(网页,书籍......)解释如何根据其定义猜测函数的类型?
从定义开始
fix f = f (fix f)
Run Code Online (Sandbox Code Playgroud)
因为它需要一个参数,所以fix必须有一个看起来像的类型
fix :: x -> y
Run Code Online (Sandbox Code Playgroud)
事实上,它将其论证应用于某些事物
fix :: (p -> q) -> r
Run Code Online (Sandbox Code Playgroud)
它实际上将其参数应用于fix f,所以
fix :: (r -> q) -> r
Run Code Online (Sandbox Code Playgroud)
最终的结果实际上是这个应用程序的结果,所以
fix :: (r -> r) -> r
Run Code Online (Sandbox Code Playgroud)