linear-smc-1.0.1: Build SMC morphisms using linear types
Safe HaskellSafe-Inferred
LanguageHaskell2010

Control.Category.Linear

Documentation

data P k r a Source #

unit :: forall k con r. (Obj k r, Monoidal k, con (), forall α β. (con α, con β) => con (α, β), con ~ Obj k) => P k r () Source #

split :: forall con a b r k. (O3 k r a b, Monoidal k, con (), forall α β. (con α, con β) => con (α, β), con ~ Obj k) => P k r (a b) %1 -> (P k r a, P k r b) Source #

merge :: forall con a b r k. (O3 k r a b, Monoidal k, con (), forall α β. (con α, con β) => con (α, β), con ~ Obj k) => (P k r a, P k r b) %1 -> P k r (a b) Source #

pattern (:::) :: forall con (k :: Type -> Type -> Type) r a b. (Obj k r, Obj k a, Obj k b, Monoidal k, con (), forall α β. (con α, con β) => con (α, β), con ~ Obj k) => P k r a %1 -> P k r b %1 -> P k r (a, b) infixr 9 Source #

encode :: O3 k r a b => (a `k` b) -> P k r a %1 -> P k r b Source #

decode :: forall a b k con. (con (), con ~ Obj k, Monoidal k, con a, con b, forall α β. (con α, con β) => con (α, β)) => (forall r. Obj k r => P k r a %1 -> P k r b) -> a `k` b Source #

(!:) :: forall con a b r k. (O3 k r a b, Monoidal k, con (), forall α β. (con α, con β) => con (α, β), con ~ Obj k) => P k r a %1 -> P k r b %1 -> P k r (a, b) Source #

ignore :: (Monoidal k, O3 k r a (), forall α β. (con α, con β) => con (α, β), con ~ Obj k) => P k r () %1 -> P k r a %1 -> P k r a Source #

copy :: (Cartesian k, O2 k r a, forall α β. (con α, con β) => con (α, β), con ~ Obj k) => P k r a %1 -> P k r (a a) Source #

discard :: (Cartesian k, O2 k r a, forall α β. (con α, con β) => con (α, β), con ~ Obj k, con ()) => P k r a %1 -> P k r () Source #