Magnifique...
let rec spower n x =
if n = 0 then .<1>.
else if n mod 2 = 0 then .<square .~(spower (n/2) x)>.
else .<.~x * .~(spower (n-1) x)>.;;
(* val spower : int -> int code -> int code = <fun> *)
let spower7_code = .< fun x -> .~(spower 7 .< x >.)>.;;
Je trouve cela particulièrement illisible. Et avec de la bête propagation de constante on aurait
let spower7_code = spower 7
[^] # Re: optimisation et propagation de constante
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche OCaml 4.06 et 4.07. Évalué à 3.
Magnifique...
let rec spower n x =
if n = 0 then .<1>.
else if n mod 2 = 0 then .<square .~(spower (n/2) x)>.
else .<.~x * .~(spower (n-1) x)>.;;
(* val spower : int -> int code -> int code = <fun> *)
let spower7_code = .< fun x -> .~(spower 7 .< x >.)>.;;
Je trouve cela particulièrement illisible. Et avec de la bête propagation de constante on aurait
let spower7_code = spower 7
"La première sécurité est la liberté"