Removing the datatype declaration of "order" allows the standard General.order
to be used. Thus we can use Int.compare and String.compare instead of the
slower home-grown versions.
consts comp :: ('a,'v) expr => (('a,'v) instr) list
primrec
"comp (Cex v) = [Const v]"
"comp (Vex a) = [Load a]"
"comp (Bex f e1 e2) = (comp e2) @ (comp e1) @ [Apply f]"