Data.Semigroupoid

semigroupoids-5.3.7: 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 | Trustworthy
Language | Haskell2010

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
  - o :: c j k -> c i j -> c i k
- 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`

Methods

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

#### Instances

Instances details

Semigroupoid Op # |
Instance details Defined in Data.Semigroupoid Methods o :: forall (j :: k) (k1 :: k) (i :: k). Op j k1 -> Op i j -> Op i k1 #
Semigroupoid (,) # | http://en.wikipedia.org/wiki/Band_(mathematics)#Rectangular_bands
Instance details Defined in Data.Semigroupoid Methods o :: forall (j :: k) (k1 :: k) (i :: k). (j, k1) -> (i, j) -> (i, k1) #
Bind m => Semigroupoid (Kleisli m :: Type -> Type -> Type) # |
Instance details Defined in Data.Semigroupoid Methods o :: forall (j :: k) (k1 :: k) (i :: k). Kleisli m j k1 -> Kleisli m i j -> Kleisli m i k1 #
Semigroupoid (Const :: Type -> Type -> Type) # |
Instance details Defined in Data.Semigroupoid Methods o :: forall (j :: k) (k1 :: k) (i :: k). Const j k1 -> Const i j -> Const i k1 #
Semigroupoid s => Semigroupoid (Categorical s :: Type -> Type -> Type) # | Since: 5.3.6
Instance details Defined in Data.Semigroupoid.Categorical Methods o :: forall (j :: k) (k1 :: k) (i :: k). Categorical s j k1 -> Categorical s i j -> Categorical s i k1 #
Apply f => Semigroupoid (Static f :: Type -> Type -> Type) # |
Instance details Defined in Data.Semigroupoid.Static Methods o :: forall (j :: k) (k1 :: k) (i :: k). Static f j k1 -> Static f i j -> Static f i k1 #
Semigroupoid (Tagged :: Type -> Type -> Type) # |
Instance details Defined in Data.Semigroupoid Methods o :: forall (j :: k) (k1 :: k) (i :: k). Tagged j k1 -> Tagged i j -> Tagged i k1 #
Semigroupoid (Coercion :: k -> k -> Type) # |
Instance details Defined in Data.Semigroupoid Methods o :: forall (j :: k0) (k1 :: k0) (i :: k0). Coercion j k1 -> Coercion i j -> Coercion i k1 #
Semigroupoid ((:~:) :: k -> k -> Type) # |
Instance details Defined in Data.Semigroupoid Methods o :: forall (j :: k0) (k1 :: k0) (i :: k0). (j :~: k1) -> (i :~: j) -> i :~: k1 #
Extend w => Semigroupoid (Cokleisli w :: Type -> Type -> Type) # |
Instance details Defined in Data.Semigroupoid Methods o :: forall (j :: k) (k1 :: k) (i :: k). Cokleisli w j k1 -> Cokleisli w i j -> Cokleisli w i k1 #
Semigroupoid (->) # |
Instance details Defined in Data.Semigroupoid Methods o :: forall (j :: k) (k1 :: k) (i :: k). (j -> k1) -> (i -> j) -> i -> k1 #
Semigroupoid ((:~~:) :: k -> k -> Type) # |
Instance details Defined in Data.Semigroupoid Methods o :: forall (j :: k0) (k1 :: k0) (i :: k0). (j :~~: k1) -> (i :~~: j) -> i :~~: k1 #
Semigroupoid k2 => Semigroupoid (Iso k2 :: k1 -> k1 -> Type) # |
Instance details Defined in Data.Isomorphism Methods o :: forall (j :: k) (k10 :: k) (i :: k). Iso k2 j k10 -> Iso k2 i j -> Iso k2 i k10 #
Semigroup m => Semigroupoid (Semi m :: k -> k -> Type) # |
Instance details Defined in Data.Semigroupoid Methods o :: forall (j :: k0) (k1 :: k0) (i :: k0). Semi m j k1 -> Semi m i j -> Semi m i k1 #
Category k2 => Semigroupoid (WrappedCategory k2 :: k1 -> k1 -> Type) # |
Instance details Defined in Data.Semigroupoid Methods o :: forall (j :: k) (k10 :: k) (i :: k). WrappedCategory k2 j k10 -> WrappedCategory k2 i j -> WrappedCategory k2 i k10 #
Semigroupoid k2 => Semigroupoid (Dual k2 :: k1 -> k1 -> Type) # |
Instance details Defined in Data.Semigroupoid.Dual Methods o :: forall (j :: k) (k10 :: k) (i :: k). Dual k2 j k10 -> Dual k2 i j -> Dual k2 i k10 #

newtype WrappedCategory k a b #

Constructors

WrapCategory |
Fields unwrapCategory :: k a b

#### Instances

Instances details

Category k2 => Category (WrappedCategory k2 :: k1 -> k1 -> Type) # |
Instance details Defined in Data.Semigroupoid Methods id :: forall (a :: k). WrappedCategory k2 a a (.) :: forall (b :: k) (c :: k) (a :: k). WrappedCategory k2 b c -> WrappedCategory k2 a b -> WrappedCategory k2 a c
Category k2 => Semigroupoid (WrappedCategory k2 :: k1 -> k1 -> Type) # |
Instance details Defined in Data.Semigroupoid Methods o :: forall (j :: k) (k10 :: k) (i :: k). WrappedCategory k2 j k10 -> WrappedCategory k2 i j -> WrappedCategory k2 i k10 #

newtype Semi m a b #

Constructors

Semi |
Fields getSemi :: m

#### Instances

Instances details

Monoid m => Category (Semi m :: k -> k -> Type) # |
Instance details Defined in Data.Semigroupoid Methods id :: forall (a :: k0). Semi m a a (.) :: forall (b :: k0) (c :: k0) (a :: k0). Semi m b c -> Semi m a b -> Semi m a c
Semigroup m => Semigroupoid (Semi m :: k -> k -> Type) # |
Instance details Defined in Data.Semigroupoid Methods o :: forall (j :: k0) (k1 :: k0) (i :: k0). Semi m j k1 -> Semi m i j -> Semi m i k1 #