(.module: [library [lux (#- and)]]) (interface: .public (Monoid a) (: a identity) (: (-> a a a) composite)) (def: .public (and left right) (All [l r] (-> (Monoid l) (Monoid r) (Monoid [l r]))) (implementation (def: identity [(\ left identity) (\ right identity)]) (def: (composite [lL rL] [lR rR]) [(\ left composite lL lR) (\ right composite rL rR)])))