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