Reading material

Pages 199-204.

Additional material

(* possibly infinite binary trees *)
datatype 'a inf_bin_tree = Leaf
                         | Branch of 'a * (unit -> 'a inf_bin_tree) * (unit -> 'a inf_bin_tree)

(* returns the sequence of labels of a binary tree *)
fun labels Leaf = Nil
  | labels (Branch(v, tfl, tfr)) = Cons(v, fn () => (labels(tfl()) || labels(tfr())))