RosettaCodeData/Task/Permutations/Haskell/permutations-4.hs
2023-07-01 13:44:08 -04:00

5 lines
249 B
Haskell

permutations :: [a] -> [[a]]
permutations = foldr (concatMap . insertEverywhere) [[]]
where insertEverywhere :: a -> [a] -> [[a]]
insertEverywhere x [] = [[x]]
insertEverywhere x l@(y:ys) = (x:l) : map (y:) (insertEverywhere x ys)