semigroupoids

Semigroupoids: Category sans id

semigroupoids

Hackage Build Status

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.

A diagram of the relationships between type classes defined in this package and elsewhere.

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.

NameLocationSuperclass ofIdeally superclass of
FunctorbaseAlt, Apply, Traversable
FoldablebaseTraversable, Foldable1
BifunctorbaseBiapply
ContravariantbaseDivise, Decide
SemigroupoidsemigroupoidsCategory
AltsemigroupoidsPlus
ApplysemigroupoidsBindApplicative
TraversablebaseTraversable1
Foldable1semigroupoidsTraversable1
Biapplysemigroupoids
DivisesemigroupoidsDivisible
DecidesemigroupoidsConcludeDecidable
CategorybaseArrow
PlussemigroupoidsAlternative
ApplicativebaseAlternative, Monad
BindsemigroupoidsMonad
Traversable1semigroupoids
Divisiblecontravariant
ConcludesemigroupoidsDecidable
Arrowbase
AlternativebaseMonadPlus
MonadbaseMonadPlus
Decidablecontravariant
MonadPlusbase

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