运算符和操作数不同意这个简单函数中的错误

operator and operand don't agree error in this simple function

考虑这个定义:

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

应该return输入的绝对值。但是当函数被调用时,我得到这个错误:

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

我做错了什么?我没有正确使用 :int 吗?

谢谢

在 SML 中,/ 是实数除法。对于整数,您需要使用 div.

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