| Safe Haskell | None |
|---|---|
| Language | GHC2024 |
Proarrow.Category.Instance.Mat
Documentation
Instances
| Num a => Monoidal (MatK a) Source Github # | Products of the dimensions of the matrices as the tensor. This is the Kronecker product of matrices. | ||||
Defined in Proarrow.Category.Instance.Mat Associated Types
Methods withOb2 :: forall (a0 :: MatK a) (b :: MatK a) r. (Ob a0, Ob b) => (Ob (a0 ** b) => r) -> r Source Github # leftUnitor :: forall (a0 :: MatK a). Ob a0 => ((Unit :: MatK a) ** a0) ~> a0 Source Github # leftUnitorInv :: forall (a0 :: MatK a). Ob a0 => a0 ~> ((Unit :: MatK a) ** a0) Source Github # rightUnitor :: forall (a0 :: MatK a). Ob a0 => (a0 ** (Unit :: MatK a)) ~> a0 Source Github # rightUnitorInv :: forall (a0 :: MatK a). Ob a0 => a0 ~> (a0 ** (Unit :: MatK a)) Source Github # associator :: forall (a0 :: MatK a) (b :: MatK a) (c :: MatK a). (Ob a0, Ob b, Ob c) => ((a0 ** b) ** c) ~> (a0 ** (b ** c)) Source Github # associatorInv :: forall (a0 :: MatK a) (b :: MatK a) (c :: MatK a). (Ob a0, Ob b, Ob c) => (a0 ** (b ** c)) ~> ((a0 ** b) ** c) Source Github # | |||||
| Num a => SymMonoidal (MatK a) Source Github # | |||||
| Num a => CopyDiscard (MatK a) Source Github # | |||||
| Num a => Distributive (MatK a) Source Github # | |||||
Defined in Proarrow.Category.Instance.Mat Methods distL :: forall (a0 :: MatK a) (b :: MatK a) (c :: MatK a). (Ob a0, Ob b, Ob c) => (a0 ** (b || c)) ~> ((a0 ** b) || (a0 ** c)) Source Github # distR :: forall (a0 :: MatK a) (b :: MatK a) (c :: MatK a). (Ob a0, Ob b, Ob c) => ((a0 || b) ** c) ~> ((a0 ** c) || (b ** c)) Source Github # distL0 :: forall (a0 :: MatK a). Ob a0 => (a0 ** (InitialObject :: MatK a)) ~> (InitialObject :: MatK a) Source Github # distR0 :: forall (a0 :: MatK a). Ob a0 => ((InitialObject :: MatK a) ** a0) ~> (InitialObject :: MatK a) Source Github # | |||||
| Num a => Hypergraph (MatK a) Source Github # | |||||
Defined in Proarrow.Category.Instance.Mat | |||||
| Num a => CategoryOf (MatK a) Source Github # | The category of matrices with entries in a type | ||||
Defined in Proarrow.Category.Instance.Mat | |||||
| Num a => HasBinaryCoproducts (MatK a) Source Github # | |||||
Defined in Proarrow.Category.Instance.Mat Methods withObCoprod :: forall (a0 :: MatK a) (b :: MatK a) r. (Ob a0, Ob b) => (Ob (a0 || b) => r) -> r Source Github # lft :: forall (a0 :: MatK a) (b :: MatK a). (Ob a0, Ob b) => a0 ~> (a0 || b) Source Github # rgt :: forall (a0 :: MatK a) (b :: MatK a). (Ob a0, Ob b) => b ~> (a0 || b) Source Github # (|||) :: forall (x :: MatK a) (a0 :: MatK a) (y :: MatK a). (x ~> a0) -> (y ~> a0) -> (x || y) ~> a0 Source Github # (+++) :: forall (a0 :: MatK a) (b :: MatK a) (x :: MatK a) (y :: MatK a). (a0 ~> x) -> (b ~> y) -> (a0 || b) ~> (x || y) Source Github # | |||||
| Num a => HasBiproducts (MatK a) Source Github # | |||||
| Num a => HasBinaryProducts (MatK a) Source Github # | |||||
Defined in Proarrow.Category.Instance.Mat Methods withObProd :: forall (a0 :: MatK a) (b :: MatK a) r. (Ob a0, Ob b) => (Ob (a0 && b) => r) -> r Source Github # fst :: forall (a0 :: MatK a) (b :: MatK a). (Ob a0, Ob b) => (a0 && b) ~> a0 Source Github # snd :: forall (a0 :: MatK a) (b :: MatK a). (Ob a0, Ob b) => (a0 && b) ~> b Source Github # (&&&) :: forall (a0 :: MatK a) (x :: MatK a) (y :: MatK a). (a0 ~> x) -> (a0 ~> y) -> a0 ~> (x && y) Source Github # (***) :: forall (a0 :: MatK a) (b :: MatK a) (x :: MatK a) (y :: MatK a). (a0 ~> x) -> (b ~> y) -> (a0 && b) ~> (x && y) Source Github # | |||||
| Num a => CompactClosed (MatK a) Source Github # | |||||
| Num a => StarAutonomous (MatK a) Source Github # | |||||
Defined in Proarrow.Category.Instance.Mat Methods dual :: forall (a0 :: MatK a) (b :: MatK a). (a0 ~> b) -> Dual b ~> Dual a0 Source Github # dualInv :: forall (a0 :: MatK a) (b :: MatK a). (Ob a0, Ob b) => (Dual a0 ~> Dual b) -> b ~> a0 Source Github # linDist :: forall (a0 :: MatK a) (b :: MatK a) (c :: MatK a). (Ob a0, Ob b, Ob c) => ((a0 ** b) ~> Dual c) -> a0 ~> Dual (b ** c) Source Github # linDistInv :: forall (a0 :: MatK a) (b :: MatK a) (c :: MatK a). (Ob a0, Ob b, Ob c) => (a0 ~> Dual (b ** c)) -> (a0 ** b) ~> Dual c Source Github # | |||||
| Num a => Closed (MatK a) Source Github # | |||||
Defined in Proarrow.Category.Instance.Mat Methods withObExp :: forall (a0 :: MatK a) (b :: MatK a) r. (Ob a0, Ob b) => (Ob (a0 ~~> b) => r) -> r Source Github # curry :: forall (a0 :: MatK a) (b :: MatK a) (c :: MatK a). (Ob a0, Ob b) => ((a0 ** b) ~> c) -> a0 ~> (b ~~> c) Source Github # apply :: forall (a0 :: MatK a) (b :: MatK a). (Ob a0, Ob b) => ((a0 ~~> b) ** a0) ~> b Source Github # (^^^) :: forall (a0 :: MatK a) (b :: MatK a) (x :: MatK a) (y :: MatK a). (b ~> y) -> (x ~> a0) -> (a0 ~~> b) ~> (x ~~> y) Source Github # | |||||
| Num a => HasInitialObject (MatK a) Source Github # | |||||
Defined in Proarrow.Category.Instance.Mat Associated Types
| |||||
| Num a => HasTerminalObject (MatK a) Source Github # | |||||
Defined in Proarrow.Category.Instance.Mat Associated Types
| |||||
| Num a => FunctorForRep (App :: MatK a +-> Type) Source Github # | |||||
| Num a => MonoidalProfunctor (Rep (App :: MatK a +-> Type) :: Type -> MatK a -> Type) Source Github # | |||||
Defined in Proarrow.Category.Instance.Mat | |||||
| RealFloat a => DaggerProfunctor (Mat :: MatK (Complex a) -> MatK (Complex a) -> Type) Source Github # | |||||
| Num a => DaggerProfunctor (Mat :: MatK a -> MatK a -> Type) Source Github # | |||||
| Num a => MonoidalAction (MatK a) (MatK a) Source Github # | |||||
Defined in Proarrow.Category.Instance.Mat Methods withObAct :: forall (a0 :: MatK a) (x :: MatK a) r. (Ob a0, Ob x) => (Ob (Act a0 x) => r) -> r Source Github # unitor :: forall (x :: MatK a). Ob x => Act (Unit :: MatK a) x ~> x Source Github # unitorInv :: forall (x :: MatK a). Ob x => x ~> Act (Unit :: MatK a) x Source Github # multiplicator :: forall (a0 :: MatK a) (b :: MatK a) (x :: MatK a). (Ob a0, Ob b, Ob x) => Act (a0 ** b) x ~> Act a0 (Act b x) Source Github # multiplicatorInv :: forall (a0 :: MatK a) (b :: MatK a) (x :: MatK a). (Ob a0, Ob b, Ob x) => Act a0 (Act b x) ~> Act (a0 ** b) x Source Github # | |||||
| Num a => Promonad (Mat :: MatK a -> MatK a -> Type) Source Github # | |||||
| Num a => MonoidalProfunctor (Mat :: MatK a -> MatK a -> Type) Source Github # | |||||
| Num a => Profunctor (Mat :: MatK a -> MatK a -> Type) Source Github # | |||||
| Num a => Costrong (MatK a) (Mat :: MatK a -> MatK a -> Type) Source Github # | |||||
| Num a => Strong (MatK a) (Mat :: MatK a -> MatK a -> Type) Source Github # | |||||
| (Num a, IsNat n) => Frobenius ('M n :: MatK a) Source Github # | |||||
| (Num a, IsNat n) => Comonoid ('M n :: MatK a) Source Github # | |||||
| (Num a, IsNat n) => Monoid ('M n :: MatK a) Source Github # | Monoids are associative, unital algebras. | ||||
| type UN ('M :: Nat -> MatK a) ('M n :: MatK a) Source Github # | |||||
| type Unit Source Github # | |||||
| type (~>) Source Github # | |||||
| type InitialObject Source Github # | |||||
Defined in Proarrow.Category.Instance.Mat | |||||
| type TerminalObject Source Github # | |||||
Defined in Proarrow.Category.Instance.Mat | |||||
| type Ob (n :: MatK a) Source Github # | |||||
| type Dual (n :: MatK a) Source Github # | |||||
Defined in Proarrow.Category.Instance.Mat | |||||
| type (x :: MatK a) ~~> (y :: MatK a) Source Github # | |||||
Defined in Proarrow.Category.Instance.Mat | |||||
| type (App :: MatK a +-> Type) @ ('M n :: MatK a) Source Github # | |||||
| type Act (p :: MatK a) (x :: MatK a) Source Github # | |||||
Defined in Proarrow.Category.Instance.Mat | |||||
| type ('M x :: MatK a) ** ('M y :: MatK a) Source Github # | |||||
| type ('M x :: MatK a) || ('M y :: MatK a) Source Github # | |||||
| type ('M x :: MatK a) && ('M y :: MatK a) Source Github # | |||||
data Mat (b :: MatK a) (c :: MatK a) where Source Github #
Constructors
| Mat | |
Instances
| RealFloat a => DaggerProfunctor (Mat :: MatK (Complex a) -> MatK (Complex a) -> Type) Source Github # | |
| Num a => DaggerProfunctor (Mat :: MatK a -> MatK a -> Type) Source Github # | |
| Num a => Promonad (Mat :: MatK a -> MatK a -> Type) Source Github # | |
| Num a => MonoidalProfunctor (Mat :: MatK a -> MatK a -> Type) Source Github # | |
| Num a => Profunctor (Mat :: MatK a -> MatK a -> Type) Source Github # | |
| Num a => Costrong (MatK a) (Mat :: MatK a -> MatK a -> Type) Source Github # | |
| Num a => Strong (MatK a) (Mat :: MatK a -> MatK a -> Type) Source Github # | |
app :: forall a (m :: Nat) (n :: Nat). (Num a, Applicative (Vec m)) => Vec n (Vec m a) -> Vec m a -> Vec n a Source Github #
arr :: forall (n :: Nat) (m :: Nat) a. Num a => FinSet ('FS m) ('FS n) -> Mat ('M n :: MatK a) ('M m :: MatK a) Source Github #
arr' :: forall (n :: Nat) (m :: Nat) a. Num a => FinSet ('FS m) ('FS n) -> Mat ('M m :: MatK a) ('M n :: MatK a) Source Github #
class (SNatI n, Applicative (Vec n), (n + 'Z) ~ n, (n * 'Z) ~ 'Z, (n * 'S 'Z) ~ n) => IsNat (n :: Nat) where Source Github #
Methods
matId :: Num a => Vec n (Vec n a) Source Github #
withPlusNat :: forall (m :: Nat) r. IsNat m => (IsNat (n + m) => r) -> r Source Github #
withMultNat :: forall (m :: Nat) r. IsNat m => (IsNat (n * m) => r) -> r Source Github #
withPlusSucc :: forall (m :: Nat) r. IsNat m => ((n + 'S m) ~ 'S (n + m) => r) -> r Source Github #
withMultSucc :: forall (m :: Nat) r. IsNat m => ((n * 'S m) ~ (n + (n * m)) => r) -> r Source Github #
withPlusSym :: forall (m :: Nat) r. IsNat m => ((n + m) ~ (m + n) => r) -> r Source Github #
withMultSym :: forall (m :: Nat) r. IsNat m => ((n * m) ~ (m * n) => r) -> r Source Github #
withAssocPlus :: forall (m :: Nat) (o :: Nat) r. (IsNat m, IsNat o) => (((n + m) + o) ~ (n + (m + o)) => r) -> r Source Github #
withAssocMult :: forall (m :: Nat) (o :: Nat) r. (IsNat m, IsNat o) => (((n * m) * o) ~ (n * (m * o)) => r) -> r Source Github #
withDist :: forall (m :: Nat) (o :: Nat) r. (IsNat m, IsNat o) => (((n + m) * o) ~ ((n * o) + (m * o)) => r) -> r Source Github #
Instances
| IsNat 'Z Source Github # | |
Defined in Proarrow.Category.Instance.Mat Methods matId :: Num a => Vec 'Z (Vec 'Z a) Source Github # withPlusNat :: forall (m :: Nat) r. IsNat m => (IsNat ('Z + m) => r) -> r Source Github # withMultNat :: forall (m :: Nat) r. IsNat m => (IsNat ('Z * m) => r) -> r Source Github # withPlusSucc :: forall (m :: Nat) r. IsNat m => (('Z + 'S m) ~ 'S ('Z + m) => r) -> r Source Github # withMultSucc :: forall (m :: Nat) r. IsNat m => (('Z * 'S m) ~ ('Z + ('Z * m)) => r) -> r Source Github # withPlusSym :: forall (m :: Nat) r. IsNat m => (('Z + m) ~ (m + 'Z) => r) -> r Source Github # withMultSym :: forall (m :: Nat) r. IsNat m => (('Z * m) ~ (m * 'Z) => r) -> r Source Github # withAssocPlus :: forall (m :: Nat) (o :: Nat) r. (IsNat m, IsNat o) => ((('Z + m) + o) ~ ('Z + (m + o)) => r) -> r Source Github # withAssocMult :: forall (m :: Nat) (o :: Nat) r. (IsNat m, IsNat o) => ((('Z * m) * o) ~ ('Z * (m * o)) => r) -> r Source Github # withDist :: forall (m :: Nat) (o :: Nat) r. (IsNat m, IsNat o) => ((('Z + m) * o) ~ (('Z * o) + (m * o)) => r) -> r Source Github # | |
| IsNat n => IsNat ('S n) Source Github # | |
Defined in Proarrow.Category.Instance.Mat Methods matId :: Num a => Vec ('S n) (Vec ('S n) a) Source Github # withPlusNat :: forall (m :: Nat) r. IsNat m => (IsNat ('S n + m) => r) -> r Source Github # withMultNat :: forall (m :: Nat) r. IsNat m => (IsNat ('S n * m) => r) -> r Source Github # withPlusSucc :: forall (m :: Nat) r. IsNat m => (('S n + 'S m) ~ 'S ('S n + m) => r) -> r Source Github # withMultSucc :: forall (m :: Nat) r. IsNat m => (('S n * 'S m) ~ ('S n + ('S n * m)) => r) -> r Source Github # withPlusSym :: forall (m :: Nat) r. IsNat m => (('S n + m) ~ (m + 'S n) => r) -> r Source Github # withMultSym :: forall (m :: Nat) r. IsNat m => (('S n * m) ~ (m * 'S n) => r) -> r Source Github # withAssocPlus :: forall (m :: Nat) (o :: Nat) r. (IsNat m, IsNat o) => ((('S n + m) + o) ~ ('S n + (m + o)) => r) -> r Source Github # withAssocMult :: forall (m :: Nat) (o :: Nat) r. (IsNat m, IsNat o) => ((('S n * m) * o) ~ ('S n * (m * o)) => r) -> r Source Github # withDist :: forall (m :: Nat) (o :: Nat) r. (IsNat m, IsNat o) => ((('S n + m) * o) ~ (('S n * o) + (m * o)) => r) -> r Source Github # | |