我正在创建一个Rationals(int*int)结构,我的一个函数是:
fun diff ((n, d), (n', d')) = let val (top, bot) = sum ((n, d), (~n', d'))
in
(top / gcd(top, bot), bot / gcd(top, bot))
end
Run Code Online (Sandbox Code Playgroud)
gcd给了我最大的共同点,所以我最终得到2/8,而不是它应该是1/4.gcd使用mod来查找gcd,因此它返回一个int.但我不能得到分区的表达式作为int类型.当我尝试添加: int * int到diff声明的末尾时,它给出了一个类型错误,表达式real*real和int*int不匹配.
如何强制整数除法,或将表达式转换为整数?如果两者都有可能,哪一个更好?