diff options
Diffstat (limited to 'stdlib/source/lux/data/collection/queue/priority.lux')
-rw-r--r-- | stdlib/source/lux/data/collection/queue/priority.lux | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/stdlib/source/lux/data/collection/queue/priority.lux b/stdlib/source/lux/data/collection/queue/priority.lux index 1af9acaab..59167d2e7 100644 --- a/stdlib/source/lux/data/collection/queue/priority.lux +++ b/stdlib/source/lux/data/collection/queue/priority.lux @@ -5,7 +5,8 @@ [monad (#+ do Monad)]] [data ["." maybe] - ["." number ("nat/." Interval<Nat>)] + [number + ["." nat ("nat/." interval)]] [collection [tree ["." finger (#+ Tree)]]]]]) @@ -24,7 +25,7 @@ (def: #export (peek queue) (All [a] (-> (Queue a) (Maybe a))) - (do maybe.Monad<Maybe> + (do maybe.monad [fingers queue] (wrap (maybe.assume (finger.search (n/= (finger.tag fingers)) fingers))))) @@ -61,7 +62,7 @@ (def: #export (pop queue) (All [a] (-> (Queue a) (Queue a))) - (do maybe.Monad<Maybe> + (do maybe.monad [fingers queue #let [highest-priority (finger.tag fingers)] node' (loop [node (get@ #finger.node fingers)] @@ -96,7 +97,7 @@ (def: #export (push priority value queue) (All [a] (-> Priority a (Queue a) (Queue a))) - (let [addition {#finger.monoid number.Max@Monoid<Nat> + (let [addition {#finger.monoid nat.maximum #finger.node (#finger.Leaf priority value)}] (case queue #.None |