Has anyone formulated a reasonable set of laws for MonadReader?

The instances for continuation-based monad transformers contradict any
intuition about local and ask.

E.g. for LogicT:

  > flip runReader 1 $ observeAllT $ local (const 2) ask
  [1]

  > flip runReader 1 $ observeAllT $ local (const 2) mzero <|> ask
  [2]

I wonder whether there are any real use cases for such instances
(and, consequently, whether they should be removed).

Roman

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to