Programmation fonctionnelle vs impérative
-
Utiliser ce qui paraît le plus simple, le plus naturel.
- Même si votre expérience est surtout impérative, ne pas oublier
que le style fonctionnel est souvent plus compact ou plus facile à
comprendre.
Exemples dans les deux styles
#let rec fact = function n ->
if n <= 0 then 1 else n*fact(n-1);;
fact : int -> int = <fun>
#let fact_imp = function n ->
let temp = ref 1 in
for i = 1 to n do
temp :=!temp*i
done;
!temp ;;
fact_imp : int -> int = <fun>
#let rec fib1 = function n ->
if n <= 1 then 1
else fib1(n-1)+fib1(n-2);;
fib1 : int -> int = <fun>
#let fib2 = function n ->
let (cour, prec, temp) =
(ref 1, ref 1, ref 1) in
for i = 1 to n-1 do
temp := !cour;
cour := !cour + !prec;
prec := !temp
done; !cour;;
fib2 : int -> int = <fun>
#let fib3 = function p ->
let rec fib_accu = function prec ->
function cour -> function n ->
if p = n then cour
else fib_accu cour (prec+cour) (n+1) in
if p <= 1 then 1 else fib_accu 1 1 1;;
fib3 : int -> int = <fun>