type 'a t (** A functional stack *) val jsont : 'a Jsont.t -> 'a t Jsont.t val push : 'a -> 'a t -> 'a t (** Push a new element to the stack. *) val pop : 'a t -> ('a * 'a t) option (** Pop an element from the stack, and the new smaller stack. Returns [None] if the stack is empty. *) val peek : 'a t -> 'a option (** Peek at the top of the stack. *) val to_list : 'a t -> 'a list (** Converts a stack to a list. *) val empty : 'a t val pp : 'a Fmt.t -> 'a t Fmt.t