Haskell`sequence`函数返回的类型与预期的略有不同

tba*_*tba 6 haskell

我是Haskell的新手并且正在玩一些代码.我对以下GHCI会话感到困惑:

*Main> :l golden_cross_sample.hs
*Main> :t stateProcessors
stateProcessors :: [State GoldenCrossState String]
*Main> :t sequence
sequence :: Monad m => [m a] -> m [a]
*Main> let res1 = (sequence stateProcessors)
*Main> :t res1
res1 :: StateT GoldenCrossState Identity [String]
Run Code Online (Sandbox Code Playgroud)

从类型签名sequence,我预计res1有类型State GoldenCrossState [String].为什么不呢?

rig*_*old 10

确实如此.State s a是一个类型的同义词StateT s Identity a,你可以在Haddock中读到.

  • 仅供参考:可以使用`:info State`轻松检查,这将在GHCi中显示类型别名定义. (4认同)