File: README.markdown

package info (click to toggle)
haskell-semigroupoids 6.0.1-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 288 kB
  • sloc: haskell: 2,257; makefile: 8
file content (63 lines) | stat: -rw-r--r-- 2,586 bytes parent folder | download | duplicates (2)
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
=============

[![Hackage](https://img.shields.io/hackage/v/semigroupoids.svg)](https://hackage.haskell.org/package/semigroupoids) [![Build Status](https://github.com/ekmett/semigroupoids/workflows/Haskell-CI/badge.svg)](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.

![A diagram of the relationships between type classes defined in this package and elsewhere.](https://raw.github.com/ekmett/semigroupoids/master/img/classes.svg)

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