aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/library/lux/data/collection/dictionary/plist.lux
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/source/library/lux/data/collection/dictionary/plist.lux')
-rw-r--r--stdlib/source/library/lux/data/collection/dictionary/plist.lux37
1 files changed, 25 insertions, 12 deletions
diff --git a/stdlib/source/library/lux/data/collection/dictionary/plist.lux b/stdlib/source/library/lux/data/collection/dictionary/plist.lux
index d646287c8..7eb2f4001 100644
--- a/stdlib/source/library/lux/data/collection/dictionary/plist.lux
+++ b/stdlib/source/library/lux/data/collection/dictionary/plist.lux
@@ -1,16 +1,17 @@
(.using
- [library
- [lux "*"
- [abstract
- [equivalence {"+" Equivalence}]]
- [data
- ["[0]" product]
- ["[0]" text ("[1]#[0]" equivalence)]
- [collection
- ["[0]" list ("[1]#[0]" functor)]]]
- [math
- [number
- ["n" nat]]]]])
+ [library
+ [lux "*"
+ [abstract
+ [equivalence {"+" Equivalence}]
+ [monoid {"+" Monoid}]]
+ [data
+ ["[0]" product]
+ ["[0]" text ("[1]#[0]" equivalence)]
+ [collection
+ ["[0]" list ("[1]#[0]" functor mix)]]]
+ [math
+ [number
+ ["n" nat]]]]])
... https://en.wikipedia.org/wiki/Property_list
(type: .public (PList a)
@@ -97,3 +98,15 @@
(All (_ a) (-> (Equivalence a) (Equivalence (PList a))))
(|>> (product.equivalence text.equivalence)
list.equivalence))
+
+(implementation: .public monoid
+ (All (_ a) (Monoid (PList a)))
+
+ (def: identity
+ ..empty)
+
+ (def: (composite left right)
+ (list#mix (function (_ [key val] it)
+ (..has key val it))
+ right
+ left)))