私は次のモナドの問題で立ち往生しています:
状態S=(LS、RS)の標準モナド状態があるとしましょう。私は別のモナドも持っています:
newtype StateP a = StateP {runP :: S -> (a, RS)}
StatePを使用して計算を実行してから、Stateモナドの状態と状態をマージします。
merge m :: StateP() -> State()
merge m = do
s@(l,r) <- get
put (l, snd (runP m s))
動作していませんが、理由がわかりません。そのような機能を実現する別の方法はありますか?