Поиск…


Использование неправильного оператора

В OCaml существуют различные арифметические операторы для float и целых чисел. Кроме того, эти операторы могут использоваться только на 2 поплавках или 2 целых числа. Ниже приведены недопустимые выражения в OCaml

1.0 + 2.0
1 + 2.0
1 +. 2
1 +. 2.0

Правильное выражение для каждого из них соответственно

1. +. 2.
float_of_int 1 +. 2.
1 + 2
float_of_int 1 +. 2.

Автоматическое литье целых чисел в float или наоборот в OCaml отсутствует. Все ясно. Вот список целочисленных и поплавковых операторов

операция Оператор Integer Оператор поплавка
прибавление a + b c +. d
Вычитание a - b c -. d
умножение a * b c *. c
разделение a / b c /. d
модуль a mod b modfloat cd
Возведение N / A c ** d

Где a и b - целые числа, а c и d - поплавки.

Забывание круглых скобок вокруг аргументов функции

Распространенная ошибка заключается в том, чтобы забыть аргументы составной функции с круглыми скобками, что приводит к ошибкам типа.

# string_of_int 1+1;;

Error: This expression has type string but an expression was expected of type int

Это из-за приоритета. В самом деле, вышесказанное оценивает

# (string_of_int 1) + 1;;

что неправильно. Правильный синтаксис

# string_of_int (1+1);;

- : string = "2"


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow