FunctorFix

Jonathan S gereeter+haskell.libraries at gmail.com
Thu Sep 7 15:11:49 UTC 2017


Your right shrinking law is almost exactly the (impure) right
shrinking law specified in Erkok's thesis on page 22, equation 2.22.
The problem with this law, as shown on page 56, is that most of the
MonadFix instances we care about do not follow the right shrinking
law. In general (see Proposition 3.1.6 on page 27), if (>>=) is strict
in its left argument then either the monad is trivial or right
shrinking is not satisfied.

On Wed, Sep 6, 2017 at 9:21 PM, David Feuer <david.feuer at gmail.com> wrote:
> I think you'll at least have to specify that g is lazy, because f may let
> its argument "leak" arbitrarily into the return value of the action it
> produces. But I don't have a clear sense of whether this is a good law
> otherwise.
>
> On Sep 6, 2017 10:04 PM, "Wolfgang Jeltsch" <wolfgang-it at jeltsch.info>
> wrote:
>
>
> While we are at pure right shrinking, let me bring up another question:
> Why is there no general right shrinking axiom for MonadFix? Something
> like the following:
>
> Right Shrinking:
>
>     mfix (\ ~(x, _) -> f x >>= \ y -> g y >>= \z -> return (y, z)) >>=
> return . snd
>     =
>     mfix f >>= g
>
> Can this be derived from the MonadFix axioms? Or are there reasonable
> MonadFix instances for which it does not hold?
>
> All the best,
> Wolfgang
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>
>
>
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>


More information about the Libraries mailing list