连接两个单子的函数

hgi*_*sel 0 monads haskell

我正在努力更好地了解monads.所以我正在尝试为几个monad编写return,join和bind实现.

然而,当来到两个单身的monad时,我有点困惑

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

m (m a)意味着monad包含在monad中,但如果使用双重monad则隐含着什么价值.例如State Monad:sa?State Monad的正确加入签名是什么样的?

Li-*_*Xia 10

状态monad类型声明为State s a; 它只与m aif 统一m ~ State s.

join :: State s (State s a) -> State s a
Run Code Online (Sandbox Code Playgroud)