circuits-learn
Safe HaskellNone
LanguageGHC2024

Circuit.Learn.Para

Contents

Description

Parameterised morphisms: (p, a) -> b.

Para p is the constant-state slice of Loop (,) — it threads a read-only parameter through a composition chain. Composition threads the same parameter to both morphisms; id discards it.

Law oracles (see circuits-learn-axioma)

  1. Category associativity: (h . g) . f == h . (g . f)
  2. Para composition is Loop (,) constant-state: threading a constant parameter through a loop yields the same result as the para composition.
Synopsis

Type

newtype Para p a b Source #

Parameterised morphism: (p, a) -> b.

Constructors

Para 

Fields

Instances

Instances details
Category (Para p :: Type -> Type -> Type) Source # 
Instance details

Defined in Circuit.Learn.Para

Methods

id :: Para p a a #

(.) :: Para p b c -> Para p a b -> Para p a c #

Arrow (Para p) Source # 
Instance details

Defined in Circuit.Learn.Para

Methods

arr :: (b -> c) -> Para p b c #

first :: Para p b c -> Para p (b, d) (c, d) #

second :: Para p b c -> Para p (d, b) (d, c) #

(***) :: Para p b c -> Para p b' c' -> Para p (b, b') (c, c') #

(&&&) :: Para p b c -> Para p b c' -> Para p b (c, c') #

ArrowLoop (Para p) Source # 
Instance details

Defined in Circuit.Learn.Para

Methods

loop :: Para p (b, d) (c, d) -> Para p b c #

Costrong (Para p) Source # 
Instance details

Defined in Circuit.Learn.Para

Methods

unfirst :: Para p (a, d) (b, d) -> Para p a b #

unsecond :: Para p (d, a) (d, b) -> Para p a b #

Strong (Para p) Source # 
Instance details

Defined in Circuit.Learn.Para

Methods

first' :: Para p a b -> Para p (a, c) (b, c) #

second' :: Para p a b -> Para p (c, a) (c, b) #

Profunctor (Para p) Source # 
Instance details

Defined in Circuit.Learn.Para

Methods

dimap :: (a -> b) -> (c -> d) -> Para p b c -> Para p a d #

lmap :: (a -> b) -> Para p b c -> Para p a c #

rmap :: (b -> c) -> Para p a b -> Para p a c #

(#.) :: forall a b c q. Coercible c b => q b c -> Para p a b -> Para p a c #

(.#) :: forall a b c q. Coercible b a => Para p b c -> q a b -> Para p a c #

Running

runPara :: Para p a b -> p -> a -> b Source #

Run with explicit parameter.

liftPara :: (a -> b) -> Para p a b Source #

Lift a plain function, ignoring the parameter.

forgetPara :: p -> Para p a b -> a -> b Source #

Forget the parameter, recover plain function.