Rationals(int * int)の構造を作成していて、関数の1つは次のとおりです。
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
gcdは私に最大公約数を与えるので、私は2/8ではなく、本来の1/4になります。gcdはmodを使用してgcdを検索するため、intを返します。しかし、除算を使用した式をintとして入力することはできません。diff宣言の最後に追加しようとする: int * int
と、式real*realとint*intが一致しないという型エラーが発生します。
整数除算を強制したり、式を整数にキャストしたりするにはどうすればよいですか?両方が可能であれば、どちらが良いですか?