私はこの形式で計算をしています: s -> a -> s
、ここでs
は何らかの状態のタイプです。このような関数の結果は、次の評価の状態でもあります。例えば、
appendInt :: String -> Int -> String
appendInt s i = s ++ (show i)
次に、appendInt "Int: " 1
を与えますが"Int: 1"
、 を(appendInt $ appendInt "Int: 1") 2
与え"Int: 12"
ます。State
しかし、この種の計算をモナドに入れる方法が見つかりません。
最初の推測は ですがs -> (s,s)
、次にa
渡すことはできません。次に、 を試し(a -> s) -> (s, a -> s)
ましたが、やはりs
なしでは取得できませんa
。出力ではなく入力であるs -> (a,s)
ため、機能しません。a
では、この計算をどのようにラップすればよいでしょうか? モナドはState
これに適していますか?