如果我的问题很愚蠢(我对monads还不熟悉),我很抱歉,但到目前为止我找不到答案。
我想将对存储为State monad中的状态。但是,如果我在(Int,Int)的一个简单例子上尝试这个,我得到(ghci):
Prelude> import Control.Monad.State
Prelude Control.Monad.State> :t get :: State Int Int
get :: State Int Int :: State Int Int
Prelude Control.Monad.State> :t get :: State (Int, Int) Int
<interactive>:1:1:
No instance for (MonadState
Int (StateT (Int, Int) Data.Functor.Identity.Identity))
arising from a use of ‘get’
In the expression: get :: State (Int, Int) Int
我的问题是:
1.为什么?
2.我如何让它工作?
答案 0 :(得分:4)
get
的类型是
get :: State s s
所以,如果你需要s = (Int, Int)
get :: State (Int, Int) (Int, Int)
这就是全部。 get
返回整个元组。