let x=5;;
if x=5 then x=2 else x=1;;
quit;;
Sally
: 3/ = est une comparaison, pas une affectation.
Le let obligatoire, c'est comme dans les très vieilles versions de BASIC obsolètes depuis au moins 10 ans.
4/ si tu fais let x = 5, tu déclares une constante. Pour faire une variable, c'est let x = ref 5,
tu accèdes ensuite au contenu de la variable par !x
et tu peux lui affecter une valeur avec :=

Sally
: naPO > 1/ peut-être que quit existe en caml light alors.
Le let obligatoire, c'est comme dans les très vieilles versions de BASIC obsolètes depuis au moins 10 ans.
Et avec ça, telchar veut encore me faire croire qu'il n'y a pas de symboles contre-intuitifs en Caml?
En d'autres mots, il faut utiliser un autre opérateur pour les assignements (:=) que pour l'initialisation (let ... =).
. C'est important puisqu'en caml, plutôt que de déduire des types des opérandes la nature de l'opérateur, le compilateur déduit de l'opérateur employé les types des opérandes, ce qui permet entre autres d'intercepter beaucoup plus d'erreurs bêtes et de les signaler avec des messages d'erreur bien plus clairs. Aucun opérateur n'a plusieurs significations.
Hippohmu
: C'est tout à fait semblable au * des pointeurs en C, et je suppose que tu trouves ce symbole merveilleusement naturel...
Hippohmu :
Et ça?
let a x y = y x in
let b x y = x y a in
let c x y = x b y in
let d x y = x y c in
let e x y = x d y in
let f x y = x y e in f;;

On en a besoin d'assez peu, sur la totalité des variables.
for i = 0 to n do <expr> done
let rec boucle i = (if i <= n then <expr>; boucle i + 1) in boucle 0
) (attention les args optionnels n'existent pas en caml-light ^^) :
let boucleforalaC ~init ?(cond = function _ -> true) ?(incr = function x -> x) body = let rec do_boucle i = (if cond i then body i; do_boucle (incr i)) in do_boucle init
²