Daniel Russell wrote:
>
> Kevin Atkinson wrote:
>
> >Could someone tell me why this is not allowed and if there is a possible
> >workaround. (I know this example seems pointless however it is a real
> >concern as having bulk types in the context is something I would really
> >like to do.)
>
> Here's the not allowed bit:
>
> >class Listable c a where
> > toList :: c a -> [a]
>
> The kind of c in the above class declaration is * -> *. That is, unary type
> constructors can be provided as actual arguments in instance declarations.
>
> >class Find c a b where
> > find :: a -> c a b -> b
>
> The kind of c in this class declaration is * -> * -> *. That is, binary type
> constructors can be provided as actual arguments in instance declarations.
>
> >instance (Listable c (a,b)) => Find c a b where
> > find a c = lookup a (toList c)
>
> Here you are trying to use c with two distinct kinds.
I guess I really don't understand the type system very well. How would
I fix such an error?
--
Kevin Atkinson
[EMAIL PROTECTED]
http://metalab.unc.edu/kevina/