proarrow-0: Category theory with a central role for profunctors
Safe HaskellNone
LanguageHaskell2010

Proarrow.Category.Instance.Free

Documentation

newtype FREE (g :: k -> k -> Type) Source Comments #

Constructors

F k 

Instances

Instances details
Rewrite g => CategoryOf (FREE g) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Free

Associated Types

type (~>) 
Instance details

Defined in Proarrow.Category.Instance.Free

type (~>) = Free :: FREE g -> FREE g -> Type
Rewrite g => Promonad (Free :: FREE g -> FREE g -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Free

Methods

id :: forall (a :: FREE g). Ob a => Free a a Source Comments #

(.) :: forall (b :: FREE g) (c :: FREE g) (a :: FREE g). Free b c -> Free a b -> Free a c Source Comments #

Rewrite g => Profunctor (Free :: FREE g -> FREE g -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Free

Methods

dimap :: forall (c :: FREE g) (a :: FREE g) (b :: FREE g) (d :: FREE g). (c ~> a) -> (b ~> d) -> Free a b -> Free c d Source Comments #

(\\) :: forall (a :: FREE g) (b :: FREE g) r. ((Ob a, Ob b) => r) -> Free a b -> r Source Comments #

type UN ('F :: j -> FREE g) ('F k :: FREE g) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Free

type UN ('F :: j -> FREE g) ('F k :: FREE g) = k
type (~>) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Free

type (~>) = Free :: FREE g -> FREE g -> Type
type Ob (a :: FREE g) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Free

type Ob (a :: FREE g) = Is ('F :: k -> FREE g) a

data Free (a :: FREE g) (b :: FREE g) where Source Comments #

Constructors

FreeId :: forall {k} {g :: k -> k -> Type} (a1 :: k). Free ('F a1 :: FREE g) ('F a1 :: FREE g) 
(:|) :: forall {k} (g :: k -> k -> Type) (a1 :: k) (b1 :: k) (c :: k). g a1 b1 -> Free ('F b1 :: FREE g) ('F c :: FREE g) -> Free ('F a1 :: FREE g) ('F c :: FREE g) infixr 4 

Instances

Instances details
Rewrite g => Promonad (Free :: FREE g -> FREE g -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Free

Methods

id :: forall (a :: FREE g). Ob a => Free a a Source Comments #

(.) :: forall (b :: FREE g) (c :: FREE g) (a :: FREE g). Free b c -> Free a b -> Free a c Source Comments #

Rewrite g => Profunctor (Free :: FREE g -> FREE g -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Free

Methods

dimap :: forall (c :: FREE g) (a :: FREE g) (b :: FREE g) (d :: FREE g). (c ~> a) -> (b ~> d) -> Free a b -> Free c d Source Comments #

(\\) :: forall (a :: FREE g) (b :: FREE g) r. ((Ob a, Ob b) => r) -> Free a b -> r Source Comments #

class Rewrite (g :: k -> k -> Type) where Source Comments #

Methods

rewriteAfterCons :: (Free :: FREE g -> FREE g -> Type) :~> (Free :: FREE g -> FREE g -> Type) Source Comments #