On Tuesday 07 September 2010 05:22:55, David Menendez wrote:
> On Mon, Sep 6, 2010 at 10:22 PM, wren ng thornton <w...@freegeek.org> 
wrote:
> > On 9/6/10 1:33 PM, David Menendez wrote:
> >> For that matter, can you even describe what pure is intended to do
> >> without reference to<*>  or join?
> >
> > As already stated: fmap f . pure = pure . f
>
> That's pretty general. For lists, the functions having that property
> include const [], \x -> [x,x], and repeat.
>
> In fact, I think *every* appropriately-typed function satisfies that
> law. Does anyone know of a counter-example?

class Functor f => Pointed f where
    point :: a -> f a
     -- satisfying fmap f . point = point . f

notQuitePure :: Pointed f => a -> f a
notQuitePure _ = point undefined

fmap (const True) . notQuitePure = point . const True

But I don't see how to violate that law without introducing undefined on 
the RHS.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to