1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
semigroupoids
=============
[](https://hackage.haskell.org/package/semigroupoids) [](https://github.com/ekmett/semigroupoids/actions?query=workflow%3AHaskell-CI)
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.
Field Guide
-----------
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.
Contact Information
-------------------
Contributions and bug reports are welcome!
Please feel free to contact me through Github or on the #haskell IRC channel on
LiberaChat.
-Edward Kmett
|