Я хочу написать немного кода (сэкономив мне много времени на реализацию в противном случае), связывая узел .Это выглядит примерно так:
n <- myinstr n x
, где теоретически myinstr
должно запустить x
, чтобы получить значение, которое станет n
.myinstr
, который работает внутри монады State
, переведет n
в состояние, но это не влияет на вычисления x
.
Я пытался использовать DoRec
иНаивная реализация mfix
,
instance Monad ? => MonadFix (MyMonad ?) where
mfix f = fix (\mx -> mx >>= f)
, но все зависает.Существуют ли какие-либо методы для исправления моего кода (или методологии для правильного проектирования с первого раза), или я должен написать что-то более простое?