anagram.hs 355 B

12345678910111213
  1. import Data.List
  2. sweep::(String -> [String]) -> String -> String -> [String]
  3. sweep f l stack = case stack of
  4. [] -> [""]
  5. cur:substack -> concat [map (\xs -> cur:xs) (f (delete cur l)), sweep f l substack]
  6. ana::String -> [String]
  7. ana l = sweep (ana) l l
  8. -- Teacher version
  9. anac "" = [""]
  10. anac xs = concat (map (\c -> map (c:) (anac (delete c xs))) xs)