type 'a t
= 'a list * 'a list
The pair l, r
represents the list List.rev_append l r
, but
with the focus on r
val to_list : 'a t ‑> 'a list
Convert the zipper back to a list.
to_list (l,r)
is List.rev_append l r
.
val to_rev_list : 'a t ‑> 'a list
Convert the zipper back to a reversed list.
In other words, to_list (l,r)
is List.rev_append r l
.
Modify the current element, if any, by returning a new element, or
returning None
if the element is to be deleted.
Insert an element at the current position. If an element was focused,
insert x l
adds x
just before it, and focuses on x
.
val is_focused : _ t ‑> bool
Is the zipper focused on some element? That is, will focused
return a Some v
?
val focused : 'a t ‑> 'a option
Return the focused element, if any. focused zip = Some _
iff
empty zip = false
.
val focused_exn : 'a t ‑> 'a
Return the focused element, or
Drop every element on the "right" (calling right then will do nothing), keeping the focused element, if any.