OCaml
Pièges courants
Recherche…
Utiliser le mauvais opérateur
Dans OCaml, il existe différents opérateurs arithmétiques pour les flottants et les entiers. De plus, ces opérateurs ne peuvent être utilisés que sur 2 flottants ou 2 entiers. Voici des expressions invalides dans OCaml
1.0 + 2.0
1 + 2.0
1 +. 2
1 +. 2.0
L'expression correcte pour chacun de ces respectivement sont
1. +. 2.
float_of_int 1 +. 2.
1 + 2
float_of_int 1 +. 2.
Il n'y a pas de conversion automatique des entiers en flottants ou vice-versa en OCaml. Tout est explicite. Voici une liste des opérateurs entiers et flottants
| Opération | Opérateur entier | Opérateur de flotteur |
|---|---|---|
| Une addition | a + b | c +. d |
| Soustraction | a - b | c -. d |
| Multiplication | a * b | c *. c |
| Division | a / b | c /. d |
| Module | a mod b | modfloat cd |
| Exponentiation | N / a | c ** d |
Où a et b sont des entiers et c et d sont des flottants.
Oublier les parenthèses autour des arguments de fonction
Une erreur courante consiste à oublier les arguments de la fonction composée environnante avec des parenthèses, ce qui conduit à des erreurs de type.
# string_of_int 1+1;;
Error: This expression has type string but an expression was expected of type int
C'est à cause de la priorité. En fait, ce qui précède est évalué à
# (string_of_int 1) + 1;;
ce qui est faux. Une syntaxe correcte serait
# string_of_int (1+1);;
- : string = "2"