Évaluation des arguments
Pour des raisons d'
efficacité
Caml-Light évalue les arguments d'une application du dernier au premier :
let foo = function x -> function y -> !x + !y ;;
let essai = ref 0 in
foo
(essai := 1 ; essai)
(essai := 2 ; essai);;
E
1
E
2
4 si l'ordre d'évaluation est
foo
puis
E
1
puis
E
2
ou bien
2 l'ordre d'évaluation est si
E
2
puis
E
1
puis
foo
Ainsi lorsqu'une application est totale il n'y a pas besoin de créer les fermetures intermédiaires :
F
x
1
x
2
...
x
n
=
F
1
x
2
...
x
n
=
F
n
-1
x
n