Given a Haskell list, return all sub-lists obtained by removing one element
Here's a simpler way to implement it:

subOneLists :: [a] -&gt; [[a]]
subOneLists [] = []
subOneLists (x:xs) = xs : map (x :) (subOneLists xs)