Modellierung von Suche/Nichtdeterminismus in Haskell: Liste von Resultaten, vgl.
permutationen :: [a] -> [[a]] permutationen [] = return [] permutationen (x:xs) = do ys <- perms xs (pre, post) <- zip (inits xs) (tails xs) return $ pre ++ x : post
Phil Wadler: How to replace failure by a list of successes--a method for exception handling, backtracking, and pattern matching in lazy functional languages. 1985. http://homepages.inf.ed.ac.uk/wadler/