From 121a6a376209de3f5a9474bf03721e2032a73e01 Mon Sep 17 00:00:00 2001 From: Marc Coquand Date: Mon, 13 May 2024 11:00:47 -0500 Subject: initial commit --- lib/zipper.ml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 lib/zipper.ml (limited to 'lib/zipper.ml') diff --git a/lib/zipper.ml b/lib/zipper.ml new file mode 100644 index 0000000..37e14de --- /dev/null +++ b/lib/zipper.ml @@ -0,0 +1,22 @@ +type zipper = + { above : string list + ; selected : string + ; below : string list + } + +let up (zipper : zipper) = + match zipper.above with + | [] -> zipper + | a :: rest -> { above = rest; selected = a; below = zipper.selected :: zipper.below } + + +let down (zipper : zipper) = + match zipper.below with + | [] -> zipper + | a :: rest -> { below = rest; selected = a; above = zipper.selected :: zipper.above } + + +let selected zipper = zipper.selected + +let to_array zipper = + List.concat [ zipper.above; [ zipper.selected ]; zipper.below ] |> Array.of_list -- cgit v1.2.3