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