为什么`\ x - > fxx` =`加入f`?

rit*_*mon 4 monads haskell function

我最近发现了自由\x -> f x xjoin f,并且想要了解原因.我从这里开始:

join :: Monad m => m (m a) -> m a
Run Code Online (Sandbox Code Playgroud)

因为我不熟悉"函数monad"而感到难过.有人可以帮助我解释平等的类型推导吗?

R B*_*R B 6

这是Monad ((->) r)类型级别的非常简单的代数转换.注意我们专注并简化类型join.

join :: Monad m => m        (m        a)  -> m        a
join ::            ((->) r) (((->) r) a)  -> ((->) r) a  -- Specializing
join ::            (r ->    (r ->     a)) -> (r ->    a) -- Infix
join ::            (r ->     r ->     a)  -> r  ->    a  -- Simplifying
Run Code Online (Sandbox Code Playgroud)