9 | record RawMagma where
10 | constructor MkRawMagma
12 | Product : Carrier -> Carrier -> Carrier
16 | rawMagma : (a : Type) -> RawMagma
17 | rawMagma a = MkRawMagma (List a) (++)
22 | rawMagma = MkRawMagma String (++)
27 | rawMagma = MkRawMagma Unit $
const $
const ()
31 | rawMagma : RawMagma -> RawMagma
32 | rawMagma magma = MkRawMagma (Maybe magma.Carrier)
37 | Just y => Just (magma.Product x y))
40 | openMagma : (magma : RawMagma) -> Semigroup magma.Carrier
41 | openMagma magma = MkSemigroup magma.Product