src/Pure/General/rat.ML
changeset 63217 20758395785a
parent 63211 0bec0d1d9998
child 63218 2cddda300fc7
--- a/src/Pure/General/rat.ML	Wed Jun 01 21:26:39 2016 +0200
+++ b/src/Pure/General/rat.ML	Wed Jun 01 21:31:08 2016 +0200
@@ -31,6 +31,8 @@
 
 datatype rat = Rat of int * int;  (*numerator, positive (!) denominator*)
 
+fun of_int i = Rat (i, 1);
+
 fun common (p1, q1) (p2, q2) =
   let val m = PolyML.IntInf.lcm (q1, q2)
   in ((p1 * (m div q1), p2 * (m div q2)), m) end;
@@ -44,8 +46,6 @@
 
 fun dest (Rat r) = r;
 
-fun of_int i = Rat (i, 1);
-
 fun string_of_rat (Rat (p, 1)) = string_of_int p
   | string_of_rat (Rat (p, q)) = string_of_int p ^ "/" ^ string_of_int q;
 
@@ -70,8 +70,8 @@
 
 fun abs (r as Rat (p, q)) = if p < 0 then Rat (~ p, q) else r;
 
-fun add (Rat (p1, q1)) (Rat (p2, q2)) =
-  let val ((m1, m2), n) = common (p1, q1) (p2, q2)
+fun add (Rat r1) (Rat r2) =
+  let val ((m1, m2), n) = common r1 r2
   in make (m1 + m2, n) end;
 
 fun mult (Rat (p1, q1)) (Rat (p2, q2)) = make (p1 * p2, q1 * q2);