open Import (* A functional stack. *) type 'a t = 'a List.t let empty = [] let push v t = v :: t let pop = function [] -> None | x :: ts -> Some (x, ts) let peek = function [] -> None | x :: _ -> Some x let pp pp ppf = Fmt.lst pp ppf let to_list v = v