[Haskell-cafe] lawless instances of Functor

Derek Elkins derek.a.elkins at gmail.com
Mon Jan 4 17:52:45 EST 2010


On Tue, Jan 5, 2010 at 7:49 AM, Steffen Schuldenzucker
<sschuldenzucker at uni-bonn.de> wrote:
> Hi Paul,
>
> Paul Brauner wrote:
>> Hi,
>>
>> I'm trying to get a deep feeling of Functors (and then pointed Functors,
>> Applicative Functors, etc.). To this end, I try to find lawless
>> instances of Functor that satisfy one law but not the other.
>>
>> I've found one instance that satisfies fmap (f.g) = fmap f . fmap g
>> but not fmap id = id:
>> [...]
>> But I can't come up with an example that satifies law 1 and not law 2.
>> I'm beginning to think this isn't possible but I didn't read anything
>> saying so, neither do I manage to prove it.
>>
>> I'm sure someone knows :)
>
> data Foo a = Foo a
>
> instance Functor Foo where
>    fmap f (Foo x) = Foo . f . f $ x

And what is the type of f here?


More information about the Haskell-Cafe mailing list