Why is the type of this function (a -> a) -> a?
问题 Why is the type of this function (a -> a) -> a? Prelude> let y f = f (y f) Prelude> :t y y :: (t -> t) -> t Shouldn't it be an infinite/recursive type? I was going to try and put into words what I think it's type should be, but I just can't do it for some reason. y :: (t -> t) -> ?WTFIsGoingOnOnTheRHS? I don't get how f (y f) resolves to a value. The following makes a little more sense to me: Prelude> let y f x = f (y f) x Prelude> :t y y :: ((a -> b) -> a -> b) -> a -> b But it's still