diff src/union_find_fn.sml @ 2274:0730e217fc9c

First draft of more specific formulas for queries.
author Ziv Scully <ziv@mit.edu>
date Thu, 05 Nov 2015 01:48:42 -0500
parents ff38b3e0cdfd
children
line wrap: on
line diff
--- a/src/union_find_fn.sml	Wed Nov 04 20:12:07 2015 -0500
+++ b/src/union_find_fn.sml	Thu Nov 05 01:48:42 2015 -0500
@@ -3,6 +3,7 @@
     val empty : unionFind
     val union : unionFind * K.ord_key * K.ord_key -> unionFind
     val union' : (K.ord_key * K.ord_key) * unionFind -> unionFind
+    val together : unionFind * K.ord_key * K.ord_key -> bool
     val classes : unionFind -> K.ord_key list list
 end = struct
 
@@ -34,6 +35,10 @@
 
 fun classes (_, cs) = (map S.listItems o M.listItems) cs
 
+fun together ((uf, _), x, y) = case K.compare (#2 (findPair (uf, x)), #2 (findPair (uf, y))) of
+                                   EQUAL => true
+                                 | _ => false
+
 fun union ((uf, cs), x, y) =
     let
         val (xSet, xRep) = findPair (uf, x)