
So far it looks like: 1. The class should be named "Category" rather than "Compositor". 2. The members should either be identity :: cat a a (<<<) :: cat b c -> cat a b -> cat a c or id :: cat a a (.) :: cat b c -> cat a b -> cat a c Since a preference has been expressed, I'll go with id and (.) unless there are objections. These will not replace the specialised id and (.) in the Prelude. 3. There might be another useful class that's a subclass of Category and a superclass of Arrow, that essentially includes first but not arr. If someone wants to name it and define it, we can put it in the class hierarchy. 4. Redefining Functor, Applicative, and Monad to have two type arguments is out of scope of this proposal. -- Ashley Yakeley