OCaml
Errores comunes
Buscar..
Usando el operador equivocado
En OCaml, hay diferentes operadores aritméticos para flotadores y enteros. Además, estos operadores solo se pueden usar en 2 flotantes o 2 enteros. Aquí hay expresiones inválidas en OCaml
1.0 + 2.0
1 + 2.0
1 +. 2
1 +. 2.0
La expresión correcta para cada uno de estos respectivamente son
1. +. 2.
float_of_int 1 +. 2.
1 + 2
float_of_int 1 +. 2.
No hay conversión automática de enteros a flotadores o viceversa en OCaml. Todo es explícito. Aquí hay una lista de los operadores de enteros y flotadores.
| Operación | Operador entero | Operador de flotador |
|---|---|---|
| Adición | a + b | c +. d |
| Sustracción | a - b | c -. d |
| Multiplicación | a * b | c *. c |
| División | a / b | c /. d |
| Módulo | a mod b | modfloat cd |
| Exposiciónción | N / A | c ** d |
Donde a y b son enteros y c y d son flotadores.
Olvidando paréntesis alrededor de argumentos de función
Un error común es olvidar los argumentos circundantes de funciones compuestas entre paréntesis, lo que lleva a errores de tipo.
# string_of_int 1+1;;
Error: This expression has type string but an expression was expected of type int
Esto se debe a la precedencia. De hecho, lo anterior evalúa a
# (string_of_int 1) + 1;;
Cuál está mal. Una sintaxis correcta sería
# string_of_int (1+1);;
- : string = "2"
Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow