Mercurial > urweb
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)