diff options
author | Adam Chlipala <adamc@hcoop.net> | 2008-08-31 09:52:52 -0400 |
---|---|---|
committer | Adam Chlipala <adamc@hcoop.net> | 2008-08-31 09:52:52 -0400 |
commit | 9e13248824201d825b9d06b266d045db63f3340d (patch) | |
tree | 724145a8efbb730bdd5f8c2453c93738190754b3 | |
parent | f8c1b7d3842354dbea3ed1e352647c258ba3eb9e (diff) |
Fix Core con comparison
-rw-r--r-- | src/core_util.sml | 12 |
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 |