summaryrefslogtreecommitdiff
path: root/src/triple_key_fn.sml
diff options
context:
space:
mode:
authorGravatar Ziv Scully <ziv@mit.edu>2015-07-19 19:03:11 -0700
committerGravatar Ziv Scully <ziv@mit.edu>2015-07-19 19:03:11 -0700
commitbc38beafd07b7ae6106a2fffda82084a08af7f06 (patch)
tree788e74a4e66ebe79ce8e03c2787c09e0ee529b0f /src/triple_key_fn.sml
parent03b7950e3639899de788cac8824a0e7f4be8a0bd (diff)
Rename C functions and remove functors nested inside modules.
Diffstat (limited to 'src/triple_key_fn.sml')
-rw-r--r--src/triple_key_fn.sml15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/triple_key_fn.sml b/src/triple_key_fn.sml
new file mode 100644
index 00000000..ba77c60b
--- /dev/null
+++ b/src/triple_key_fn.sml
@@ -0,0 +1,15 @@
+functor TripleKeyFn (structure I : ORD_KEY
+ structure J : ORD_KEY
+ structure K : ORD_KEY)
+ : ORD_KEY where type ord_key = I.ord_key * J.ord_key * K.ord_key = struct
+
+type ord_key = I.ord_key * J.ord_key * K.ord_key
+
+fun compare ((i1, j1, k1), (i2, j2, k2)) =
+ case I.compare (i1, i2) of
+ EQUAL => (case J.compare (j1, j2) of
+ EQUAL => K.compare (k1, k2)
+ | ord => ord)
+ | ord => ord
+
+end