Data.Semigroupoid

semigroupoids-5.1: Semigroupoids: Category sans id

Copyright | (C) 2007-2015 Edward Kmett
License | BSD-style (see the file LICENSE)
Maintainer | Edward Kmett <ekmett@gmail.com>
Stability | provisional
Portability | portable
Safe Haskell | Safe
Language | Haskell98

Data.Semigroupoid

Description

A semigroupoid satisfies all of the requirements to be a Category except for the existence of identity arrows.

Synopsis

- class Semigroupoid c where
- newtype WrappedCategory k a b = WrapCategory {
  - unwrapCategory :: k a b
  }
- newtype Semi m a b = Semi {
  - getSemi :: m
  }

# Documentation

class Semigroupoid c where #

`Category` sans `id`

Minimal complete definition

o

Methods

o :: c j k -> c i j -> c i k #

Instances

Semigroupoid k k1 => Semigroupoid k (Iso k k1) # |
Methods o :: c j k -> c i j -> c i k #
Semigroup m => Semigroupoid k (Semi k k m) # |
Methods o :: c j k -> c i j -> c i k #
Category k k1 => Semigroupoid k (WrappedCategory k k k1) # |
Methods o :: c j k -> c i j -> c i k #
Semigroupoid k k1 => Semigroupoid k (Dual k k k1) # |
Methods o :: c j k -> c i j -> c i k #
Semigroupoid * (->) # |
Methods o :: c j k -> c i j -> c i k #
Semigroupoid * (,) # | http://en.wikipedia.org/wiki/Band_(mathematics)#Rectangular_bands
Methods o :: c j k -> c i j -> c i k #
Semigroupoid * Op # |
Methods o :: c j k -> c i j -> c i k #
Bind m => Semigroupoid * (Kleisli m) # |
Methods o :: c j k -> c i j -> c i k #
Extend w => Semigroupoid * (Cokleisli w) # |
Methods o :: c j k -> c i j -> c i k #
Apply f => Semigroupoid * (Static f) # |
Methods o :: c j k -> c i j -> c i k #

newtype WrappedCategory k a b #

Constructors

WrapCategory |
Fields unwrapCategory :: k a b

Instances

Category k k1 => Category k (WrappedCategory k k k1) # |
Methods id :: cat a a # (.) :: cat b c -> cat a b -> cat a c #
Category k k1 => Semigroupoid k (WrappedCategory k k k1) # |
Methods o :: c j k -> c i j -> c i k #

newtype Semi m a b #

Constructors

Semi |
Fields getSemi :: m

Instances

Monoid m => Category k (Semi k k m) # |
Methods id :: cat a a # (.) :: cat b c -> cat a b -> cat a c #
Semigroup m => Semigroupoid k (Semi k k m) # |
Methods o :: c j k -> c i j -> c i k #