相关疑难解决方法(0)

为什么这个函数的类型(a - > a) - > a?

为什么这个函数的类型(a - > a) - > a?

Prelude> let y f = f (y f)
Prelude> :t y
y :: (t -> t) -> t
Run Code Online (Sandbox Code Playgroud)

它不应该是无限/递归类型吗?我打算尝试将我认为类型应该是的,但我出于某种原因无法做到这一点.

y :: (t -> t) -> ?WTFIsGoingOnOnTheRHS?
Run Code Online (Sandbox Code Playgroud)

我不知道f(yf)如何解析为一个值.以下对我来说更有意义:

Prelude> let y f x = f (y f) x
Prelude> :t y
y :: ((a -> b) -> a -> b) -> a -> b
Run Code Online (Sandbox Code Playgroud)

但它仍然令人难以置信的混乱.这是怎么回事?

recursion haskell types anonymous y-combinator

21
推荐指数
4
解决办法
792
查看次数

标签 统计

anonymous ×1

haskell ×1

recursion ×1

types ×1

y-combinator ×1