私はこの問題に取り組んでおり、これまでに関連する質問をしていました。 Implementation of State Monad私のコードをさらに洗練するために、私は1つの増分関数を使って実装しようとしました。状態モナド例問題
module StateExample where
import Control.Monad.State
data GlobState = GlobState { c1 :: Int, c2:: Int, c3:: Int} deriving (Show)
newGlobState:: GlobState
newGlobState = GlobState { c1=0,c2=0,c3=0 }
incr :: String-> State GlobState()
incr x = do
modify(\g -> g {x =x g + 1})
main:: IO()
main = do
let a1= flip execState newGlobState $ do
incr c1
incr c2
incr c1
print a
しかし、ここで私はエラー私はこのエラーを削除するにはどうすればよい
`x' is not a (visible) constructor field name
取得していますか?
モジュールData.Label.PureMはライブラリにありません。どのように私はそれをインストールするのですか? –
'fclabels'をインストールするためのいくつかの指示で私の答えを更新しました。これはCabalで' Data.Label.PureM'を提供します。 – danr
レンズ(または "ラベル"またはあなたがそれらを呼びたいもの)のための完全なセールスポイントは、 –