(* example : aintvex5.ml *) (* let *) (* f(x, y, z, p, q) = if 0 < p then *) (* if p = 1 then *) (* if z = 0 then x *) (* else y fi *) (* else f(z, z, 0, p, 1, x) fi *) (* else f(0, 0, z, 1, y) fi; *) (* in *) (* f(1111, 2222, 1, 2, 3333) ;; *) let pr5 = ([("f",( [(FPVAL "x"); (FPVAL "y"); (FPVAL "z"); (FPVAL "p"); (FPVAL "q")], IF( (LESS ((CST "0"), (VAR "p"))), ( (IF ( (EQUAL ((VAR "p"), (CST "1"))), ( (IF ( (EQUAL ((VAR "z"), (CST "0"))), ( (VAR "x"), (VAR "y")))), (CALL ("f", [(VAR "z"); (VAR "z"); (CST "0"); (SUB ((VAR "p"),(CST "1"))); (VAR "x") ] )) ))), (CALL ("f", [(CST "0"); (CST "0"); (VAR "z"); (CST "1"); (VAR "y") ])) )) ))], (CALL ("f", [(CST "1111"); (CST "2222"); (CST "1"); (CST "2"); (CST "3333") ])) ) ;; evalprog pr5;;