2013-10-13 2 views

Répondre

7

Comme cela a été récemment mentionné ici plusieurs fois, OCaml n'a aucune déclaration. Il a seulement des expressions. Pour qu'une expression if ait du sens, les parties then et else doivent être du même type. Dans votre code, la partie then est 1. C'est-à-dire qu'il a le type int. Dans la partie else, vous avez une expression for. Le type d'une expression for est unit. C'est ce que le compilateur se plaint. Toutefois, la résolution de ce problème ne sera que la première étape car votre code est basé sur une mauvaise compréhension du fonctionnement des variables OCaml. Les variables OCaml telles que soma sont immutable. Vous ne pouvez pas changer leur valeur. Ainsi, l'expression soma = soma + 1 est en fait une comparaison qui indique si les deux valeurs sont égales:

# let soma = 0;; 
val soma : int = 0 
# soma = soma + 1;; 
- : bool = false 

D'une manière générale, vous devez trouver un moyen de résoudre votre problème sans attribuer aux variables; c'est-à-dire sans changer leurs valeurs.

Si vous débutez avec une programmation fonctionnelle, cela semble absurde. Cependant, il s'avère juste être une autre façon de regarder les choses.

Questions connexes