From b2c1c524f9074637cfbedc07a065f2c75d635e73 Mon Sep 17 00:00:00 2001 From: Ziv Scully Date: Thu, 5 Nov 2015 01:48:42 -0500 Subject: First draft of more specific formulas for queries. --- src/union_find_fn.sml | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/union_find_fn.sml') diff --git a/src/union_find_fn.sml b/src/union_find_fn.sml index e6f8d9bf..7880591f 100644 --- a/src/union_find_fn.sml +++ b/src/union_find_fn.sml @@ -3,6 +3,7 @@ functor UnionFindFn(K : ORD_KEY) :> sig 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 find ((uf, _), x) = (S.listItems o #1 o findPair) (uf, x) 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) -- cgit v1.2.3