aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/library/lux/data/collection/set
diff options
context:
space:
mode:
authorEduardo Julian2022-04-08 21:59:08 -0400
committerEduardo Julian2022-04-08 21:59:08 -0400
commitab99de20a3d0566a71bf0ef607d9d6e291d7f62a (patch)
tree3755ede88eebb40e76291b45d0e3be4fdfb68621 /stdlib/source/library/lux/data/collection/set
parent120ebb44dbb1a20fc150e5e58099f90be2e61d49 (diff)
Removed (mostly useless) pattern-matching macro for abstract types.
Diffstat (limited to 'stdlib/source/library/lux/data/collection/set')
-rw-r--r--stdlib/source/library/lux/data/collection/set/multi.lux41
-rw-r--r--stdlib/source/library/lux/data/collection/set/ordered.lux2
2 files changed, 23 insertions, 20 deletions
diff --git a/stdlib/source/library/lux/data/collection/set/multi.lux b/stdlib/source/library/lux/data/collection/set/multi.lux
index bdb423f0e..7654c4239 100644
--- a/stdlib/source/library/lux/data/collection/set/multi.lux
+++ b/stdlib/source/library/lux/data/collection/set/multi.lux
@@ -75,15 +75,16 @@
[sum n.+]
)
- (def: .public (intersection parameter (abstract.pattern subject))
+ (def: .public (intersection parameter subject)
(All (_ a) (-> (Set a) (Set a) (Set a)))
- (list#mix (function (_ [elem multiplicity] output)
- (..has (n.min (..multiplicity parameter elem)
- multiplicity)
- elem
- output))
- (..empty (dictionary.key_hash subject))
- (dictionary.entries subject)))
+ (let [subject (representation subject)]
+ (list#mix (function (_ [elem multiplicity] output)
+ (..has (n.min (..multiplicity parameter elem)
+ multiplicity)
+ elem
+ output))
+ (..empty (dictionary.key_hash subject))
+ (dictionary.entries subject))))
(def: .public (difference parameter subject)
(All (_ a) (-> (Set a) (Set a) (Set a)))
@@ -114,23 +115,25 @@
(implementation: .public equivalence
(All (_ a) (Equivalence (Set a)))
- (def: (= (abstract.pattern reference) sample)
- (and (n.= (dictionary.size reference)
- (dictionary.size (representation sample)))
- (|> reference
- dictionary.entries
- (list.every? (function (_ [elem multiplicity])
- (|> elem
- (..multiplicity sample)
- (n.= multiplicity))))))))
+ (def: (= reference sample)
+ (let [reference (representation reference)]
+ (and (n.= (dictionary.size reference)
+ (dictionary.size (representation sample)))
+ (|> reference
+ dictionary.entries
+ (list.every? (function (_ [elem multiplicity])
+ (|> elem
+ (..multiplicity sample)
+ (n.= multiplicity)))))))))
(implementation: .public hash
(All (_ a) (Hash (Set a)))
(def: equivalence ..equivalence)
- (def: (hash (abstract.pattern set))
- (let [[hash _] set]
+ (def: (hash set)
+ (let [set (representation set)
+ [hash _] set]
(list#mix (function (_ [elem multiplicity] acc)
(|> elem (# hash hash) (n.* multiplicity) (n.+ acc)))
0
diff --git a/stdlib/source/library/lux/data/collection/set/ordered.lux b/stdlib/source/library/lux/data/collection/set/ordered.lux
index edb7c6539..f79a1b640 100644
--- a/stdlib/source/library/lux/data/collection/set/ordered.lux
+++ b/stdlib/source/library/lux/data/collection/set/ordered.lux
@@ -10,7 +10,7 @@
[dictionary
["/" ordered]]]]
[type
- [abstract {"-" pattern}]]]])
+ [abstract "*"]]]])
(abstract: .public (Set a)
(/.Dictionary a a)