18 overlap :: ([a], [a], [a]) -> ([a], [a], [a]) 19 overlap (as, bs, cs) = 20 if bs == take (length bs) cs then (as, bs, (drop (length bs) cs)) 21 else if (length bs) > 1 then overlap (as:[head bs]) (tail bs) cs 22 else ([], [], [])