History variables: Difference between revisions
Content added Content deleted
(→{{header|Tcl}}: added zkl) |
(→{{header|Oberon-2}}: Added OCaml version just below Oberon-2) |
||
Line 983: | Line 983: | ||
ShowVal(history.Undo()); |
ShowVal(history.Undo()); |
||
END HVar. |
END HVar. |
||
</lang> |
|||
=={{header|OCaml}}== |
|||
<lang ocaml> |
|||
module History = |
|||
struct |
|||
type hist = { mutable hve: int list } |
|||
let init () = { hve = [] } |
|||
let push h e = |
|||
h.hve <- e::h.hve |
|||
let pop h = |
|||
match h.hve with |
|||
| [] -> () |
|||
| v::t -> h.hve <- t; print_int v; print_newline () |
|||
let show hv = |
|||
List.iter (fun v -> Printf.printf "History entry: %5d\n" v) hv.hve |
|||
end |
|||
open History |
|||
module H = History |
|||
let () = |
|||
let hv = H.init() in |
|||
H.push hv 111; |
|||
H.push hv 4; |
|||
H.push hv 42; |
|||
H.show hv; |
|||
H.pop hv; |
|||
H.pop hv; |
|||
H.pop hv |
|||
</lang> |
</lang> |
||