結び目を結ぶことで、洗練されたコードを書きたいと思います(そうでなければ実装する時間を大幅に節約できます)。ざっくりこんな感じで、
n <- myinstr n x
理論的には、myinstr
を実行x
して値を取得する必要があり、これは になりn
ます。モナドmyinstr
内で実行される は状態に入りますが、これはの計算には影響しません。State
n
x
DoRec
の単純な実装を使用してみましたがmfix
、
instance Monad => MonadFix (MyMonad ) where
mfix f = fix (\mx -> mx >>= f)
しかし、物事は凍結します。コードを修正する方法 (または最初から正しく設計するための方法論) はありますか?