Puzzle_undo
type 'a t = {
now : 'a;
past : 'a list;
}
val start : 'a -> 'a t
val record : 'a -> 'a t -> 'a t
val undo : 'a t -> 'a t