fun twin' [] k = k ([], []) | twin' (c::s) k = k ([], c::s) orelse twin' s (fn (s1, s2) => k (c::s1, s2)) fun twin s = twin' s (fn (x, y) => x = y) val result = twin (String.explode "bobo")