OCaml
Insidie comuni
Ricerca…
Usando l'operatore sbagliato
In OCaml esistono diversi operatori aritmetici per float e interi. Inoltre, questi operatori possono essere utilizzati solo su 2 float o 2 interi. Qui ci sono espressioni non valide in OCaml
1.0 + 2.0
1 + 2.0
1 +. 2
1 +. 2.0
L'espressione corretta per ciascuno di questi sono rispettivamente
1. +. 2.
float_of_int 1 +. 2.
1 + 2
float_of_int 1 +. 2.
Non c'è il casting automatico di numeri interi in float o viceversa in OCaml. Tutto è esplicito. Ecco una lista degli operatori interi e float
| operazione | Operatore intero | Operatore Float |
|---|---|---|
| aggiunta | a + b | c +. d |
| Sottrazione | a - b | c -. d |
| Moltiplicazione | a * b | c *. c |
| Divisione | a / b | c /. d |
| Modulo | a mod b | modfloat cd |
| elevamento a potenza | N / A | c ** d |
Dove a e b sono numeri interi e c e d sono float.
Dimenticando le parentesi attorno agli argomenti delle funzioni
Un errore comune è quello di dimenticare gli argomenti della funzione composta circostante con parentesi, che portano a errori di tipo.
# string_of_int 1+1;;
Error: This expression has type string but an expression was expected of type int
Questo è dovuto alla precedenza. In effetti, quanto sopra valuta
# (string_of_int 1) + 1;;
che è sbagliato. Sarebbe una sintassi corretta
# string_of_int (1+1);;
- : string = "2"
Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow