diff options
Diffstat (limited to 'stdlib/source/lux/control/monoid.lux')
-rw-r--r-- | stdlib/source/lux/control/monoid.lux | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/stdlib/source/lux/control/monoid.lux b/stdlib/source/lux/control/monoid.lux index 53f91474f..6634445a6 100644 --- a/stdlib/source/lux/control/monoid.lux +++ b/stdlib/source/lux/control/monoid.lux @@ -1,6 +1,5 @@ (;module: lux) -## Signatures (sig: #export (Monoid a) {#;doc "A way to compose values. @@ -9,3 +8,12 @@ identity) (: (-> a a a) compose)) + +(def: #export (compose Monoid<l> Monoid<r>) + (All [l r] (-> (Monoid l) (Monoid r) (Monoid [l r]))) + (struct (def: identity + [(:: Monoid<l> identity) (:: Monoid<r> identity)]) + + (def: (compose [lL rL] [lR rR]) + [(:: Monoid<l> compose lL lR) + (:: Monoid<r> compose rL rR)]))) |