doc-src/IsarAdvanced/Codegen/Thy/examples/nat_binary.ML
author haftmann
Wed, 28 May 2008 11:05:47 +0200
changeset 26999 284c871d3acb
permissions -rw-r--r--
added new code_datatype example
haftmann@26999
     1
structure Nat = 
haftmann@26999
     2
struct
haftmann@26999
     3
haftmann@26999
     4
datatype nat = Dig1 of nat | Dig0 of nat | One_nat | Zero_nat;
haftmann@26999
     5
haftmann@26999
     6
fun plus_nat (Dig1 m) (Dig1 n) = Dig0 (plus_nat (plus_nat m n) One_nat)
haftmann@26999
     7
  | plus_nat (Dig1 m) (Dig0 n) = Dig1 (plus_nat m n)
haftmann@26999
     8
  | plus_nat (Dig0 m) (Dig1 n) = Dig1 (plus_nat m n)
haftmann@26999
     9
  | plus_nat (Dig0 m) (Dig0 n) = Dig0 (plus_nat m n)
haftmann@26999
    10
  | plus_nat (Dig1 m) One_nat = Dig0 (plus_nat m One_nat)
haftmann@26999
    11
  | plus_nat One_nat (Dig1 n) = Dig0 (plus_nat n One_nat)
haftmann@26999
    12
  | plus_nat (Dig0 m) One_nat = Dig1 m
haftmann@26999
    13
  | plus_nat One_nat (Dig0 n) = Dig1 n
haftmann@26999
    14
  | plus_nat m Zero_nat = m
haftmann@26999
    15
  | plus_nat Zero_nat n = n;
haftmann@26999
    16
haftmann@26999
    17
end; (*struct Nat*)