David Feuer david.feuer at
Wed Aug 30 20:30:09 UTC 2017

I assume you want to impose the MonadFix sliding law,

ffix (fmap h . f) = fmap h (ffix (f . h)), for strict h.

Do you also want the nesting law?

ffix (\x -> ffix (\y -> f x y)) = ffix (\x -> f x x)

Are there any other laws you'd like to add in place of the seemingly
irrelevant purity
and left shrinking laws?

Can you give some sample instances and how one might use them?

On Wed, Aug 30, 2017 at 2:59 PM, Wolfgang Jeltsch
<wolfgang-it at> wrote:
> Hi!
> There is the MonadFix class with the mfix method. However, there are
> situations where you need a fixed point operator of type a -> f a for
> some f, but f is not necessarily a monad. What about adding a FunctorFix
> class that is identical to MonadFix, except that it has a Functor, not a
> Monad, superclass constraint?
> All the best,
> Wolfgang
> _______________________________________________
> Libraries mailing list
> Libraries at

More information about the Libraries mailing list