21
1
type Command = { Redo: unit->unit; Undo: unit->unit }
2
3
let mutable result = 7
4
5
let add n = {
6
Redo = (fun _ -> result <- result + n);
7
Undo = (fun _ -> result <- result - n) }
8
9
let minus n = {
10
Redo = (fun _ -> result <- result - n);
11
Undo = (fun _ -> result <- result + n) }
12
13
let cmd = (add 3)
14
printfn "current state = %d" result
15
16
cmd.Redo()
17
printfn "after redo: %d" result
18
19
cmd.Undo()
20
printfn "after undo: %d" result
21
A10*"Operational Metrics~Canadian Dollars (Canadian $/US$)~9999"