
28 May
2012
28 May
'12
2:16 p.m.
Actually, I think the backtracking property here stems more from the
MonadPlus StateT instance than from the properties of Maybe.
(mplus a b runs a and b by passing explicitely the same state to them).
2012/5/28 Roman Cheplyaka
observe $ flip runStateT 10 $ (put 0 >> mzero) <|> modify (+3) ((),13)
If the only thing you need is backtracking, using LogicT might be a
* Yves Parès
[2012-05-28 11:28:22+0200] little overkill, using Maybe in the bottom of you monad stack suits just fine:
case flip runStateT 10 $ (put 0 >> mzero) <|> modify (+3) of Just x -> .... Nothing -> ....
Indeed, I didn't realise that Maybe may be (no pun intended) sufficient here!
-- Roman I. Cheplyaka :: http://ro-che.info/