ekmett/semigroupoids

Haskell

76

380 commits

updated Sep 21, 2026

See the code

README

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
Foldable1baseTraversable1
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

Contributors

ekmett

180 commits

RyanGlScott

124 commits

phadej

12 commits

kozross

9 commits

ekmett/semigroupoids

Haskell

76

380 commits

updated Sep 21, 2026

See the code

README

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
Foldable1baseTraversable1
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

Contributors

ekmett

180 commits

RyanGlScott

124 commits

phadej

12 commits

kozross

9 commits

Languages

Haskell

100.0%