[Haskell-cafe] Re: kinds question

Ashley Yakeley ashley at semantic.org
Thu Dec 22 21:27:41 EST 2005

David Roundy wrote:
> Hello all,
> I have a question about how to create the right kind to declare lists to be
> a class.  I have a class Foo
> class Foo f where
>   foo :: f a -> Foo
> and I want to define that a list of Foos is also a Foo, but can't see how
> to do it.  I imagine something like
> instance Foo f => Foo [f] where
>   foo xs = map foo xs
> but of course [f] isn't a valid type.

[] and f both have * -> *, and you want to compose them. You can do this 
like this:

   newtype Compose p q a = MkCompose p (q a)

and then

   instance Foo f => instance (Compose [] f) where
     foo (MkCompose fs) = ...

More information about the Haskell-Cafe mailing list