diff options
Diffstat (limited to '')
-rw-r--r-- | stdlib/source/library/lux/data/collection/tree/zipper.lux | 108 |
1 files changed, 54 insertions, 54 deletions
diff --git a/stdlib/source/library/lux/data/collection/tree/zipper.lux b/stdlib/source/library/lux/data/collection/tree/zipper.lux index b6fb27355..6d1709c55 100644 --- a/stdlib/source/library/lux/data/collection/tree/zipper.lux +++ b/stdlib/source/library/lux/data/collection/tree/zipper.lux @@ -50,23 +50,23 @@ (def: .public tree (All [a] (-> (Zipper a) (Tree a))) - (get@ #node)) + (value@ #node)) (def: .public value (All [a] (-> (Zipper a) a)) - (get@ [#node #//.value])) + (value@ [#node #//.value])) (def: .public (set value zipper) (All [a] (-> a (Zipper a) (Zipper a))) - (set@ [#node #//.value] value zipper)) + (with@ [#node #//.value] value zipper)) (def: .public (update transform zipper) (All [a] (-> (-> a a) (Zipper a) (Zipper a))) - (update@ [#node #//.value] transform zipper)) + (revised@ [#node #//.value] transform zipper)) (def: children (All [a] (-> (Zipper a) (List (Tree a)))) - (get@ [#node #//.children])) + (value@ [#node #//.children])) (def: .public leaf? (All [a] (-> (Zipper a) Bit)) @@ -78,7 +78,7 @@ (def: .public (start? zipper) (All [a] (-> (Zipper a) Bit)) - (case (get@ #family zipper) + (case (value@ #family zipper) #.None true @@ -92,7 +92,7 @@ #.None (#.Item head tail) - (#.Some {#family (#.Some {#parent (set@ [#node #//.children] (list) zipper) + (#.Some {#family (#.Some {#parent (with@ [#node #//.children] (list) zipper) #lefts #.End #rights tail}) #node head}))) @@ -100,37 +100,37 @@ (def: .public (up zipper) (All [a] (-> (Zipper a) (Maybe (Zipper a)))) (do maybe.monad - [family (get@ #family zipper)] + [family (value@ #family zipper)] (in (let [(^slots [#parent #lefts #rights]) family] (for {@.old - (update@ #node (: (-> (Tree (:parameter 0)) - (Tree (:parameter 0))) - (set@ #//.children (list\compose (list.reversed lefts) - (#.Item (get@ #node zipper) - rights)))) - parent)} - (set@ [#node #//.children] - (list\compose (list.reversed lefts) - (#.Item (get@ #node zipper) - rights)) - parent)))))) + (revised@ #node (: (-> (Tree (:parameter 0)) + (Tree (:parameter 0))) + (with@ #//.children (list\compose (list.reversed lefts) + (#.Item (value@ #node zipper) + rights)))) + parent)} + (with@ [#node #//.children] + (list\compose (list.reversed lefts) + (#.Item (value@ #node zipper) + rights)) + parent)))))) (template [<one> <all> <side> <op_side>] [(def: .public (<one> zipper) (All [a] (-> (Zipper a) (Maybe (Zipper a)))) - (case (get@ #family zipper) + (case (value@ #family zipper) (#.Some family) - (case (get@ <side> family) + (case (value@ <side> family) (#.Item next side') (#.Some (for {@.old {#family (#.Some (|> family - (set@ <side> side') - (update@ <op_side> (|>> (#.Item (get@ #node zipper)))))) + (with@ <side> side') + (revised@ <op_side> (|>> (#.Item (value@ #node zipper)))))) #node next}} (let [move (: (All [a] (-> (List (Tree a)) (Zipper a) (Family Zipper a) (Family Zipper a))) (function (_ side' zipper) - (|>> (set@ <side> side') - (update@ <op_side> (|>> (#.Item (get@ #node zipper)))))))] + (|>> (with@ <side> side') + (revised@ <op_side> (|>> (#.Item (value@ #node zipper)))))))] {#family (#.Some (move side' zipper family)) #node next}))) @@ -142,26 +142,26 @@ (def: .public (<all> zipper) (All [a] (-> (Zipper a) (Maybe (Zipper a)))) - (case (get@ #family zipper) + (case (value@ #family zipper) #.None #.None (#.Some family) - (case (list.reversed (get@ <side> family)) + (case (list.reversed (value@ <side> family)) #.End #.None (#.Item last prevs) (#.Some (for {@.old {#family (#.Some (|> family - (set@ <side> #.End) - (update@ <op_side> (|>> (#.Item (get@ #node zipper)) - (list\compose prevs))))) + (with@ <side> #.End) + (revised@ <op_side> (|>> (#.Item (value@ #node zipper)) + (list\compose prevs))))) #node last}} (let [move (: (All [a] (-> (List (Tree a)) (Zipper a) (Family Zipper a) (Family Zipper a))) (function (_ prevs zipper) - (|>> (set@ <side> #.End) - (update@ <op_side> (|>> (#.Item (get@ #node zipper)) - (list\compose prevs))))))] + (|>> (with@ <side> #.End) + (revised@ <op_side> (|>> (#.Item (value@ #node zipper)) + (list\compose prevs))))))] {#family (#.Some (move prevs zipper family)) #node last}))))))] @@ -245,44 +245,44 @@ (def: .public (interpose value zipper) (All [a] (-> a (Zipper a) (Zipper a))) - (update@ [#node #//.children] - (|>> (//.branch value) list) - zipper)) + (revised@ [#node #//.children] + (|>> (//.branch value) list) + zipper)) (def: .public (adopt value zipper) (All [a] (-> a (Zipper a) (Zipper a))) - (update@ [#node #//.children] - (|>> (#.Item (//.leaf value))) - zipper)) + (revised@ [#node #//.children] + (|>> (#.Item (//.leaf value))) + zipper)) (def: .public (remove zipper) (All [a] (-> (Zipper a) (Maybe (Zipper a)))) (do maybe.monad - [family (get@ #family zipper)] - (case (get@ #lefts family) + [family (value@ #family zipper)] + (case (value@ #lefts family) #.End - (in (set@ [#node #//.children] - (get@ #rights family) - (get@ #parent family))) + (in (with@ [#node #//.children] + (value@ #rights family) + (value@ #parent family))) (#.Item next side) (in (|> zipper - (set@ #family (|> family - (set@ #lefts side) - #.Some)) - (set@ #node next)))))) + (with@ #family (|> family + (with@ #lefts side) + #.Some)) + (with@ #node next)))))) (template [<name> <side>] [(def: .public (<name> value zipper) (All [a] (-> a (Zipper a) (Maybe (Zipper a)))) - (case (get@ #family zipper) + (case (value@ #family zipper) #.None #.None (#.Some family) - (#.Some (set@ #family - (#.Some (update@ <side> (|>> (#.Item (//.leaf value))) family)) - zipper))))] + (#.Some (with@ #family + (#.Some (revised@ <side> (|>> (#.Item (//.leaf value))) family)) + zipper))))] [insert_left #lefts] [insert_right #rights] @@ -304,14 +304,14 @@ (def: &functor ..functor) - (def: out (get@ [#node #//.value])) + (def: out (value@ [#node #//.value])) (def: (split (^slots [#family #node])) (let [tree_splitter (: (All [a] (-> (Tree a) (Tree (Zipper a)))) (function (tree_splitter tree) {#//.value (..zipper tree) #//.children (|> tree - (get@ #//.children) + (value@ #//.children) (list\map tree_splitter))}))] {#family (maybe\map (function (_ (^slots [#parent #lefts #rights])) {#parent (split parent) |