fantasy-land/id :: Category c => () -> c a a
I don't really understand what this signature says? id is a method that takes zero parameters and returns something that is a Category and two other things.
Is that correct? What's the point of this?
                        
A category consists of objects and morphisms (arrows). If you want to define a category inside Haskell, you pretty much are stuck with objects as types. But for any two objects you may define a set of morphisms: the hom-set. Here,
cis a type constructor that takes two objects (types), sayaandband produces a hom-setc a b. In the simplest example just replacecwith(->). In this casec a bbecomesa->b(using infix notation). By the same tokenc a acorresponds toa->a. One of these morphisms is designated as the identity morphism. The function() -> c a apicks that morphism. The complete definition must also include the composition operator(.)that takes two composable hom-sets and produces a third, and the laws. Unit and associativity laws are not expressible in Haskell, though.