私は状態モナドhereを通じてつもりだと私が実装しようとしている:状態モナドを実装するときのデータコンストラクタエラー?
import Control.Monad.Reader
import Control.Monad.Writer
import Control.Monad.State
type Stack = [Int]
pop :: State Stack Int
pop = State $ (x : xs) -> (x, xs)
は、しかし、私は次のエラーを取得しています:
"Data constructor not in scope:
State :: ([t0] -> (t0, [t0])) -> State Stack Int
Perhaps you meant one of these:
‘StateT’ (imported from Control.Monad.State),
variable ‘state’ (imported from Control.Monad.State)"
私はここで基本的な何かが足りないのですか?
アレックさん、ありがとうございました - 私は老いていないのでうれしいです! –
[リンクされたチュートリアルは古いものであり、単純化していません。](http://hackage.haskell.org/package/mtl-1.0/docs/Control-Monad-State。html#t:State)「アイデンティティ」に階層化されたトランスフォーマーには、対応するモナドを直接定義するのと比較してランタイムコストがかかっていると心配していた時代があり、多くのライブラリ(mtlを含む)最終的には、これに対するコードの重複/保守負担の議論が、それに対するパフォーマンスの議論を勝ち取った。 –