Я учусь. Это то, что я нашел странное:OCaml буквальное отрицательное число?
let test_treeways x = match x with
| _ when x < 0 -> -1
| _ when x > 0 -> 1
| _ -> 0;;
Если бы я тогда называть это так:
test_threeways -10;;
Я получаю ошибку несоответствия типов (потому что, насколько я понимаю, он интерпретирует унарный минус, как если это частичное применение функции, поэтому он рассматривает тип выражения, чтобы быть int -> int
Однако, это:.
test_threeways (-10);;
действует, как и ожидалось (хотя это на самом деле вычисляет Val ue, как я мог понять, он не передает постоянную «минус десять» функции.
Итак, как вы пишете постоянные отрицательные числа в OCaml?
Комментарий стиля: сопоставление образцов лучше всего подходит для деструктурирования значений. Это упражнение скорее должно быть конструкцией if. –