diff options
Diffstat (limited to '')
-rw-r--r-- | stdlib/source/library/lux/data/collection/tree/zipper.lux | 54 |
1 files changed, 27 insertions, 27 deletions
diff --git a/stdlib/source/library/lux/data/collection/tree/zipper.lux b/stdlib/source/library/lux/data/collection/tree/zipper.lux index 7f168c2d3..15265bf94 100644 --- a/stdlib/source/library/lux/data/collection/tree/zipper.lux +++ b/stdlib/source/library/lux/data/collection/tree/zipper.lux @@ -19,15 +19,15 @@ (type: (Family Zipper a) (Record - {#parent (Zipper a) + [#parent (Zipper a) #lefts (List (Tree a)) - #rights (List (Tree a))})) + #rights (List (Tree a))])) ... https://en.wikipedia.org/wiki/Zipper_(data_structure) (type: .public (Zipper a) (Record - {#family (Maybe (Family Zipper a)) - #node (Tree a)})) + [#family (Maybe (Family Zipper a)) + #node (Tree a)])) (implementation: .public (equivalence super) (All (_ a) @@ -46,8 +46,8 @@ (def: .public (zipper tree) (All (_ a) (-> (Tree a) (Zipper a))) - {#family #.None - #node tree}) + [#family #.None + #node tree]) (def: .public tree (All (_ a) (-> (Zipper a) (Tree a))) @@ -93,10 +93,10 @@ #.None (#.Item head tail) - (#.Some {#family (#.Some {#parent (with@ [#node #//.children] (list) zipper) + (#.Some [#family (#.Some [#parent (with@ [#node #//.children] (list) zipper) #lefts #.End - #rights tail}) - #node head}))) + #rights tail]) + #node head]))) (def: .public (up zipper) (All (_ a) (-> (Zipper a) (Maybe (Zipper a)))) @@ -124,16 +124,16 @@ (case (value@ <side> family) (#.Item next side') (#.Some (for {@.old - {#family (#.Some (|> family + [#family (#.Some (|> family (with@ <side> side') (revised@ <op_side> (|>> (#.Item (value@ #node zipper)))))) - #node next}} + #node next]} (let [move (: (All (_ a) (-> (List (Tree a)) (Zipper a) (Family Zipper a) (Family Zipper a))) (function (_ side' zipper) (|>> (with@ <side> side') (revised@ <op_side> (|>> (#.Item (value@ #node zipper)))))))] - {#family (#.Some (move side' zipper family)) - #node next}))) + [#family (#.Some (move side' zipper family)) + #node next]))) #.End #.None) @@ -153,18 +153,18 @@ #.None (#.Item last prevs) - (#.Some (for {@.old {#family (#.Some (|> family + (#.Some (for {@.old [#family (#.Some (|> family (with@ <side> #.End) (revised@ <op_side> (|>> (#.Item (value@ #node zipper)) (list\composite prevs))))) - #node last}} + #node last]} (let [move (: (All (_ a) (-> (List (Tree a)) (Zipper a) (Family Zipper a) (Family Zipper a))) (function (_ prevs zipper) (|>> (with@ <side> #.End) (revised@ <op_side> (|>> (#.Item (value@ #node zipper)) (list\composite prevs))))))] - {#family (#.Some (move prevs zipper family)) - #node last}))))))] + [#family (#.Some (move prevs zipper family)) + #node last]))))))] [right rightmost #rights #lefts] [left leftmost #lefts #rights] @@ -293,12 +293,12 @@ (Functor Zipper) (def: (each f (^slots [#family #node])) - {#family (maybe\each (function (_ (^slots [#parent #lefts #rights])) - {#parent (each f parent) + [#family (maybe\each (function (_ (^slots [#parent #lefts #rights])) + [#parent (each f parent) #lefts (list\each (//\each f) lefts) - #rights (list\each (//\each f) rights)}) + #rights (list\each (//\each f) rights)]) family) - #node (//\each f node)})) + #node (//\each f node)])) (implementation: .public comonad (CoMonad Zipper) @@ -310,13 +310,13 @@ (def: (disjoint (^slots [#family #node])) (let [tree_splitter (: (All (_ a) (-> (Tree a) (Tree (Zipper a)))) (function (tree_splitter tree) - {#//.value (..zipper tree) + [#//.value (..zipper tree) #//.children (|> tree (value@ #//.children) - (list\each tree_splitter))}))] - {#family (maybe\each (function (_ (^slots [#parent #lefts #rights])) - {#parent (disjoint parent) + (list\each tree_splitter))]))] + [#family (maybe\each (function (_ (^slots [#parent #lefts #rights])) + [#parent (disjoint parent) #lefts (list\each tree_splitter lefts) - #rights (list\each tree_splitter rights)}) + #rights (list\each tree_splitter rights)]) family) - #node (tree_splitter node)}))) + #node (tree_splitter node)]))) |