open Pp;; #load "interpret.cmo";; open Interpret;; (* Pour tester: ocaml fact.ml 1 2 3 0 Calcul fact n pour chaque valeur de n donnée et affiche le résultat. La dernière valeure 0 indique la sortie du programme. *) let fact = let fact = { arguments = ["n", Integer]; result = Some Integer; local_vars = []; body = If (Bin (Le, Get "n", Int 1), Set ("fact", Int 1), Set ("fact", (Bin (Times, Get "n", Function_call ("fact", [Bin (Minus, Get "n", Int 1)]))) )) } in { global_vars = ["x", Integer; ]; definitions = ["fact", fact]; main = Sequence [ Set ("x", Int 1); While (Bin (Gt, Get "x", Int 0), Sequence [ Read_int ("x"); If (Bin (Gt, Get "x", Int 0), Writeln_int (Function_call ("fact", [Get "x"])), Sequence []); ]); ] } ;; eval fact;;