[Haskell-cafe] can't figure out a type

John Lato jwlato at gmail.com
Wed Feb 11 11:52:08 EST 2009


I'm working on some code like the following:

> class Chunkable c el | c -> el where
>   cLength :: c -> Int
>   cHead :: c -> Maybe el

I want to be able to map over this type, like this:

>  cMap :: Chunkable c' el' => (el -> el') -> c -> c'

but this isn't quite right.  c' shouldn't be any instance of
Chunkable, it should be the same instance except parameterized over a
different type.  Another approach would be something like:

class (Functor c) => Chunkable c el

except that's not right either.  I think c has the wrong kind to be a
Functor instance.

I expect there's something very basic I'm missing.  Could anyone point
in the proper direction of how to do this?  Can this be expressed with
associated types, perhaps?


John Lato

More information about the Haskell-Cafe mailing list