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

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"


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow