-{- Old stuff now not in List
-
-elemIndexBy :: (a -> a -> Bool) -> [a] -> a -> Int
-elemIndexBy eq [] x = error "List.elemIndexBy: empty list"
-elemIndexBy eq (x:xs) x' = if x `eq` x' then 0 else 1 + elemIndexBy eq xs x'
-
--- subsequences xs returns the list of all subsequences of xs.
--- e.g., subsequences "abc" == ["","c","b","bc","a","ac","ab","abc"]
-subsequences :: [a] -> [[a]]
-subsequences [] = [[]]
-subsequences (x:xs) = subsequences xs ++ map (x:) (subsequences xs)
-
--- permutations xs returns the list of all permutations of xs.
--- e.g., permutations "abc" == ["abc","bac","bca","acb","cab","cba"]
-permutations :: [a] -> [[a]]
-permutations [] = [[]]
-permutations (x:xs) = [zs | ys <- permutations xs, zs <- interleave x ys ]
- where interleave :: a -> [a] -> [[a]]
- interleave x [] = [[x]]
- interleave x (y:ys) = [x:y:ys] ++ map (y:) (interleave x ys)
--}