aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/lux/control/monoid.lux
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/source/lux/control/monoid.lux')
-rw-r--r--stdlib/source/lux/control/monoid.lux10
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)])))