我想通过打结来写一段漂亮的代码(节省我很多时间来实现)。大致是这样的,
n <- myinstr n x
理论上,myinstr
应该运行x
以获得一个值,这将成为n
. myinstr
在State
monad 中运行的 , 将n
进入状态,但这不会影响x
' 的计算。
我尝试过使用DoRec
和幼稚的实现mfix
,
instance Monad => MonadFix (MyMonad ) where
mfix f = fix (\mx -> mx >>= f)
但事情冻结了。是否有任何方法可以修复我的代码(或第一次正确设计它的方法)或者我应该写一些更直接的东西?