changeset 2277:6bce459ca581

Add new files missing from previous commit.
author Ziv Scully <ziv@mit.edu>
date Mon, 09 Nov 2015 13:38:04 -0500
parents c05f9a5e0f0f
children b7615e0ac4b0
files src/list_key_fn.sml src/pair_key_fn.sml
diffstat 2 files changed, 26 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/list_key_fn.sml	Mon Nov 09 13:38:04 2015 -0500
@@ -0,0 +1,14 @@
+functor ListKeyFn(K : ORD_KEY)
+        : ORD_KEY where type ord_key = K.ord_key list = struct
+
+type ord_key = K.ord_key list
+
+val rec compare =
+ fn ([], []) => EQUAL
+  | ([], _) => LESS
+  | (_, []) => GREATER
+  | (x::xs, y::ys) => case K.compare (x, y) of
+                              EQUAL => compare (xs, ys)
+                            | ord => ord
+
+end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pair_key_fn.sml	Mon Nov 09 13:38:04 2015 -0500
@@ -0,0 +1,12 @@
+functor PairKeyFn (structure I : ORD_KEY
+                     structure J : ORD_KEY)
+        : ORD_KEY where type ord_key = I.ord_key * J.ord_key = struct
+
+type ord_key = I.ord_key * J.ord_key
+
+fun compare ((i1, j1), (i2, j2)) =
+    case I.compare (i1, i2) of
+        EQUAL => J.compare (j1, j2)
+      | ord => ord
+
+end