-- Slide 41 import Data.List sweep::(String -> [String]) -> String -> String -> [String] sweep f l stack = case stack of [] -> [""] cur:substack -> concat [map (\xs -> cur:xs) (f (delete cur l)), sweep f l substack] ana::String -> [String] ana l = sweep (ana) l l -- Teacher version anac "" = [""] anac xs = concat (map (\c -> map (c:) (anac (delete c xs))) xs)