Haskell 以元组为状态的状态 monad

Haskell State monad with tuples as state

如果我的问题很愚蠢(我对 monad 还是很陌生),我深表歉意,但到目前为止我找不到答案。

我想将对作为状态存储在 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. 我如何让它工作?

get的类型是

get :: State s s

所以如果 s = (Int, Int) 那么你想要

get :: State (Int, Int) (Int, Int)

就是这样。 get returns 整个元组。