A semigroupoid is a Category
without id
. This package provides a range of
id
-free versions of type classes, as well as some supporting functions and
data types.
The diagram below describes the relationships between the type classes defined
in this package, and those from base
(with some from contravariant
as well). Thick-bordered
nodes correspond to type classes defined in this package; thin-bordered ones are
from elsewhere. Solid edges represent subclass relationships that actually
exist; dashed edges are those which should exist in theory.
We also provide the following table. This is structured in superclass order -
thus, for any type class T
, all superclasses of T
will be listed before T
in the table.
Name | Location | Superclass of | Ideally superclass of |
---|---|---|---|
Functor |
base |
Alt , Apply , Traversable |
|
Foldable |
base |
Traversable , Foldable1 |
|
Bifunctor |
base |
Biapply |
|
Contravariant |
base |
Divise , Decide |
|
Semigroupoid |
semigroupoids |
Category |
|
Alt |
semigroupoids |
Plus |
|
Apply |
semigroupoids |
Bind |
Applicative |
Traversable |
base |
Traversable1 |
|
Foldable1 |
semigroupoids |
Traversable1 |
|
Biapply |
semigroupoids |
||
Divise |
semigroupoids |
Divisible |
|
Decide |
semigroupoids |
Conclude |
Decidable |
Category |
base |
Arrow |
|
Plus |
semigroupoids |
Alternative |
|
Applicative |
base |
Alternative , Monad |
|
Bind |
semigroupoids |
Monad |
|
Traversable1 |
semigroupoids |
||
Divisible |
contravariant |
||
Conclude |
semigroupoids |
Decidable |
|
Arrow |
base |
||
Alternative |
base |
MonadPlus |
|
Monad |
base |
MonadPlus |
|
Decidable |
contravariant |
||
MonadPlus |
base |
We omit some type class relationships from this diagram, as they are not relevant for the purposes of this package.
Contributions and bug reports are welcome!
Please feel free to contact me through Github or on the #haskell IRC channel on LiberaChat.
-Edward Kmett