diff options
author | Eduardo Julian | 2022-04-08 21:59:08 -0400 |
---|---|---|
committer | Eduardo Julian | 2022-04-08 21:59:08 -0400 |
commit | ab99de20a3d0566a71bf0ef607d9d6e291d7f62a (patch) | |
tree | 3755ede88eebb40e76291b45d0e3be4fdfb68621 /stdlib/source/library/lux/data/collection/set | |
parent | 120ebb44dbb1a20fc150e5e58099f90be2e61d49 (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.lux | 41 | ||||
-rw-r--r-- | stdlib/source/library/lux/data/collection/set/ordered.lux | 2 |
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) |