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.Product.Definition
13 | Const2 : Type -> ComMonoid -> AddCont
14 | Const2 a m = MkAddCont a (\_ => m)
20 | Const : (a : Type) -> (mon : ComMonoid a) => AddCont
21 | Const a = Const2 a (
a ** mon)
26 | Nap : ComMonoid -> AddCont
27 | Nap b = Const2 Unit b
33 | Flat : Type -> AddCont
34 | Flat a = Const2 a (
Unit ** %search)
41 | Empty = MkAddCont Void absurd
48 | Scalar = Nap (
Nat ** %search)
55 | UnitCont = Const Unit
58 | Maybe : AddCont -> AddCont
59 | Maybe c = UnitCont >+< c