0 | module Data.Container.Additive.Object.Instances
2 | import Data.List.Quantifiers
3 | import Data.Vect.Quantifiers
5 | import Data.Container.Base
6 | import Data.ComMonoid
7 | import public Data.Container.Additive.Object.Definition
8 | import Data.Container.Additive.Extension.Definition
9 | import Data.Container.Additive.Product.Definition
10 | import Data.Container.Additive.Properties.Definition
15 | Const2 : Type -> ComMonoid -> AddCont
16 | Const2 a m = MkAddCont a (\_ => m)
22 | Const : (a : Type) -> (mon : ComMonoid a) => AddCont
23 | Const a = Const2 a (
a ** mon)
27 | data IsConst : AddCont -> Type where
28 | MkIsConst : (p : Type) -> (mon : ComMonoid p) => IsConst (Const p)
37 | numOnPositions : {0 p : Type} -> (num : Num p) => (mon : ComMonoid p) =>
38 | InterfaceOnPositions (Const p @{mon}) Num
39 | numOnPositions = MkI (\_ => num)
44 | Nap : ComMonoid -> AddCont
45 | Nap b = Const2 Unit b
51 | Flat : Type -> AddCont
52 | Flat a = Const2 a (
Unit ** %search)
60 | Empty = MkAddCont Void absurd
68 | Scalar = Nap (
Nat ** %search)
76 | UnitCont = Const Unit