[Haskell-cafe] Applicative but not Monad

Luke Palmer lrpalmer at gmail.com
Fri Oct 30 12:59:59 EDT 2009

On Fri, Oct 30, 2009 at 10:39 AM, Tom Davie <tom.davie at gmail.com> wrote:
> Of note, there is a sensible monad instance for zip lists which I *think*
> agrees with the Applicative one, I don't know why they're not monads:
> instance Monad (ZipList a) where
>   return = Ziplist . return
>   join (ZipList []) = ZipList []
>   join (ZipList (a:as)) = zlHead a `zlCons` join (map zlTail as)

IIRC, that doesn't satisfy the associativity law, particularly when
you are joining a list of lists of different lengths.  2 minutes of
experimenting failed to find me the counterexample though.

More information about the Haskell-Cafe mailing list