summaryrefslogtreecommitdiff
path: root/src/core_util.sml
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2008-08-31 09:52:52 -0400
committerGravatar Adam Chlipala <adamc@hcoop.net>2008-08-31 09:52:52 -0400
commit9e13248824201d825b9d06b266d045db63f3340d (patch)
tree724145a8efbb730bdd5f8c2453c93738190754b3 /src/core_util.sml
parentf8c1b7d3842354dbea3ed1e352647c258ba3eb9e (diff)
Fix Core con comparison
Diffstat (limited to 'src/core_util.sml')
-rw-r--r--src/core_util.sml12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/core_util.sml b/src/core_util.sml
index 609152ec..0b1b4a0b 100644
--- a/src/core_util.sml
+++ b/src/core_util.sml
@@ -160,9 +160,15 @@ fun compare ((c1, _), (c2, _)) =
| (CRecord (k1, xvs1), CRecord (k2, xvs2)) =>
join (Kind.compare (k1, k2),
- fn () => joinL (fn ((x1, v1), (x2, v2)) =>
- join (compare (x1, x2),
- fn () => compare (v1, v2))) (xvs1, xvs2))
+ fn () =>
+ let
+ val sort = ListMergeSort.sort (fn ((x1, _), (x2, _)) =>
+ compare (x1, x2) = GREATER)
+ in
+ joinL (fn ((x1, v1), (x2, v2)) =>
+ join (compare (x1, x2),
+ fn () => compare (v1, v2))) (sort xvs1, sort xvs2)
+ end)
| (CRecord _, _) => LESS
| (_, CRecord _) => GREATER