aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/library/lux/type/refinement.lux
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/source/library/lux/type/refinement.lux')
-rw-r--r--stdlib/source/library/lux/type/refinement.lux40
1 files changed, 20 insertions, 20 deletions
diff --git a/stdlib/source/library/lux/type/refinement.lux b/stdlib/source/library/lux/type/refinement.lux
index 2de171779..8e4f23952 100644
--- a/stdlib/source/library/lux/type/refinement.lux
+++ b/stdlib/source/library/lux/type/refinement.lux
@@ -25,9 +25,9 @@
(-> (Predicate t) (Refiner t %))))
(function (_ value)
(if (predicate value)
- {#.Some (:abstraction [#value value
+ {.#Some (:abstraction [#value value
#predicate predicate])}
- #.None)))
+ {.#None})))
(template [<name> <output> <slot>]
[(def: .public <name>
@@ -44,45 +44,45 @@
(-> (Refined t %) (Maybe (Refined t %)))))
(function (_ refined)
(let [(^slots [#value #predicate]) (:representation refined)
- value' (transform value)]
- (if (predicate value')
- {#.Some (:abstraction [#value value'
- #predicate predicate])}
- #.None))))
+ value' (transform #value)]
+ (if (#predicate value')
+ {.#Some (:abstraction [..#value value'
+ ..#predicate #predicate])}
+ {.#None}))))
)
(def: .public (only refiner values)
(All (_ t %)
(-> (Refiner t %) (List t) (List (Refined t %))))
(case values
- #.End
- #.End
+ {.#End}
+ {.#End}
- {#.Item head tail}
+ {.#Item head tail}
(case (refiner head)
- {#.Some refined}
- {#.Item refined (only refiner tail)}
+ {.#Some refined}
+ {.#Item refined (only refiner tail)}
- #.None
+ {.#None}
(only refiner tail))))
(def: .public (partition refiner values)
(All (_ t %)
(-> (Refiner t %) (List t) [(List (Refined t %)) (List t)]))
(case values
- #.End
- [#.End #.End]
+ {.#End}
+ [{.#End} {.#End}]
- {#.Item head tail}
+ {.#Item head tail}
(let [[yes no] (partition refiner tail)]
(case (refiner head)
- {#.Some refined}
- [{#.Item refined yes}
+ {.#Some refined}
+ [{.#Item refined yes}
no]
- #.None
+ {.#None}
[yes
- {#.Item head no}]))))
+ {.#Item head no}]))))
(syntax: .public (type [refiner <code>.any])
(macro.with_identifiers [g!t g!%]