On Sun, Aug 15, 2010 at 10:50 AM, Ivan Lazar Miljenovic <ivan.miljenovic@gmail.com> wrote:

Yeah, I'm working on something like this at the moment, but I'm
currently stuck on naming: if I want to have Functor for kind * -> *,
what's a good name for a type class for kind *?

I was thinking about EtaFunctor, which stands for ç-expanded Functor. But I'm not sure about ç-expansion is correct term for removing polymorphism from the type class.

Also, is there any type for which having a map a -> a _doesn't_ make
sense?  Bloomfilters maybe?

Not the answer, but there are cases where having a map (a -> b) -> f -> g could make some new sense:

    data BitList = ...
    fromBoolList :: [Bool] -> BitList
    type instance NewPt [a] b = [b]
    type instance NewPt [a] Bool = BitList
 
But this kind of overlapping type instance is not allowed in ghc (yet?)

--
All the best,
Alexey