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

Control.Category.Linear

Documentation

data P k r a Source #

mkUnit :: forall k con a r. (Obj k r, Monoidal k, con (), con a, forall α β. (con α, con β) => con (α, β), con ~ Obj k) => P k r a %1 -> (P k r a, 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 #

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 #