OCaml
Общие проблемы
Поиск…
Использование неправильного оператора
В 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