On Mon, Jul 25, 2011 at 3:01 AM, Mark Spezzano <mark.spezzano@chariot.net.au> wrote:

Also, I think that class CoArbitrary can help to generate random *functions *(as opposed to values; but tell me if I'm wrong) but I don't see how this could be useful.

How would you test that a function with the type

endo :: Functor f => (a -> a) -> f a -> f a

satisfies some property?  You pass in "random" functions which satisfy "some" property, and pass in "random" (f a)'s to try it on.