оператор и операнд не согласны с ошибкой в ​​этой простой функции - PullRequest
1 голос
/ 22 апреля 2019

Рассмотрим это определение:

fun abs(x:int):int = (x*x)/(~x);

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

Error: operator and operand don't agree [tycon mismatch]
  operator domain: real * real
  operand:         int * int
  in expression:
    x * x / ~ x

Что я делаю не так? Разве я не использовал :int правильно?

Спасибо

1 Ответ

2 голосов
/ 22 апреля 2019

В SML / - это деление на реальные. Для целых чисел необходимо использовать div.

> fun abs x = x*x div ~x;
val abs = fn : int -> int
...