ar_factory#
- discopy.cat.ar_factory(cls)[source]#
Allows the identity and composition of an
Arrowsubclass to remain within the subclass.- Parameters:
cls – Some subclass of
Arrow.
Note
The factory method pattern (FMP) is used all over DisCoPy.
Example
Let’s create
Circuitas a subclass ofArrowwith anObsubclassQubitas domain and codomain.>>> from discopy.cat import Ob, Arrow, Box >>> class Qubit(Ob): ... pass >>> @ar_factory ... class Circuit(Arrow): ... ob = Qubit
The
Circuitsubclass itself has a subclassGateas boxes.>>> class Gate(Box, Circuit): ... pass
The identity and composition of
Circuitis again aCircuit.>>> X = Gate('X', Qubit(), Qubit()) >>> assert isinstance(X >> X, Circuit) >>> assert isinstance(Circuit.id(), Circuit) >>> assert isinstance(Circuit.id().dom, Qubit)