fun ls x y = let fun uniq l = foldr (fn (b, a) => b :: List.filter (fn x => x <> b) a) [] l val p = y ^ (if String.isSuffix "/" y then "" else "/") in (uniq o map (subst "/.*" "/" o subst p "") o List.filter (String.isPrefix p)) x end