diff options
| author | Federico Igne <undyamon@disroot.org> | 2024-01-12 14:12:04 +0100 |
|---|---|---|
| committer | Federico Igne <undyamon@disroot.org> | 2024-01-12 14:12:04 +0100 |
| commit | 5b32d8115b7ea81dffc3fe48a0291569dba99e3b (patch) | |
| tree | 3e1e81229e2f5611015f59ffcc2878d1b85b27d8 | |
| parent | 0ac7c7839f4d8a3fe173177921e8d058c405da6d (diff) | |
| download | sandy-5b32d8115b7ea81dffc3fe48a0291569dba99e3b.tar.gz sandy-5b32d8115b7ea81dffc3fe48a0291569dba99e3b.zip | |
fear(zipper): add function to join two zippers
| -rw-r--r-- | lib/zipper.ml | 1 | ||||
| -rw-r--r-- | lib/zipper.mli | 4 |
2 files changed, 5 insertions, 0 deletions
diff --git a/lib/zipper.ml b/lib/zipper.ml index 2322a58..30be8eb 100644 --- a/lib/zipper.ml +++ b/lib/zipper.ml | |||
| @@ -87,6 +87,7 @@ let split z = | |||
| 87 | ( { z with after = Sequence.empty }, | 87 | ( { z with after = Sequence.empty }, |
| 88 | { z with pos = 0; before = Sequence.empty } ) | 88 | { z with pos = 0; before = Sequence.empty } ) |
| 89 | 89 | ||
| 90 | let join z1 z2 = { z1 with after = z2.after } | ||
| 90 | let iter_before f z = Sequence.iter ~f z.before | 91 | let iter_before f z = Sequence.iter ~f z.before |
| 91 | let iter_after f z = Sequence.iter ~f z.after | 92 | let iter_after f z = Sequence.iter ~f z.after |
| 92 | 93 | ||
diff --git a/lib/zipper.mli b/lib/zipper.mli index c3c79a6..beeb181 100644 --- a/lib/zipper.mli +++ b/lib/zipper.mli | |||
| @@ -145,6 +145,10 @@ val split : 'a zipper -> 'a zipper * 'a zipper | |||
| 145 | (** [split z] splits the zipper in two. [([3; 2; 1], [4; 5])] becomes | 145 | (** [split z] splits the zipper in two. [([3; 2; 1], [4; 5])] becomes |
| 146 | [([3; 2; 1], []), ([], [4; 5])]. *) | 146 | [([3; 2; 1], []), ([], [4; 5])]. *) |
| 147 | 147 | ||
| 148 | val join : 'a zipper -> 'a zipper -> 'a zipper | ||
| 149 | (** [join z1 z2] creates a new zipper using [before z1] and [after z2]. | ||
| 150 | [([3; 2; 1], []) ([4; 2], [4; 5])] becomes [([3; 2; 1], [4; 5])]. *) | ||
| 151 | |||
| 148 | (** {1 Consuming zippers} *) | 152 | (** {1 Consuming zippers} *) |
| 149 | 153 | ||
| 150 | (** Since zippers are based on sequences, iterating over zippers | 154 | (** Since zippers are based on sequences, iterating over zippers |
