Я хочу написать фрагмент кода (экономя много времени, чтобы реализовать в противном случае) связывая узел. Это примерно так,
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)
но все замораживается. Существуют ли какие-либо методы для исправления моего кода (или методики его правильного проектирования в первый раз) или я должен написать что-то более прямое?