# [m-rev.] diff: simplify the rational module a little

Julien Fischer juliensf at cs.mu.OZ.AU
Thu Aug 19 16:03:22 AEST 2004

```Estimated hours taken: 0.1
Branches: main

Simplify the rational module a little.

library/rational.m:
Remove the local type rational.comparison.  We can

Julien.

Index: rational.m
===================================================================
RCS file: /home/mercury1/repository/mercury/library/rational.m,v
retrieving revision 1.7
diff -u -r1.7 rational.m
--- rational.m	12 Jan 2004 12:46:40 -0000	1.7
+++ rational.m	19 Aug 2004 05:55:42 -0000
@@ -98,19 +98,19 @@

'<'(R1, R2) :-
Cmp = cmp(R1, R2),
-	Cmp = lessthan.
+	Cmp = (<).

'>'(R1, R2) :-
Cmp = cmp(R1, R2),
-	Cmp = greaterthan.
+	Cmp = (>).

'=<'(R1, R2) :-
Cmp = cmp(R1, R2),
-	(Cmp = lessthan ; Cmp = equal).
+	(Cmp = (<) ; Cmp = (=)).

'>='(R1, R2) :-
Cmp = cmp(R1, R2),
-	(Cmp = greaterthan ; Cmp = equal).
+	(Cmp = (>) ; Cmp = (=)).

rational__rational(Int) = rational_norm(integer(Int), integer__one).

@@ -203,21 +203,16 @@
; integer__one
).

-:- type comparison
-	--->	equal
-	;	lessthan
-	;	greaterthan.
-
-:- func cmp(rational, rational) = comparison.
+:- func cmp(rational, rational) = comparison_result.

cmp(R1, R2) = Cmp :-
Diff = R1 - R2,
( is_zero(Diff) ->
-		Cmp = equal
+		Cmp = (=)
; is_negative(Diff) ->
-		Cmp = lessthan
+		Cmp = (<)
;
-		Cmp = greaterthan
+		Cmp = (>)
).

:- pred is_zero(rational::in) is semidet.

--------------------------------------------------------------------------
mercury-reviews mailing list
post:  mercury-reviews at cs.mu.oz.au