module Data.List.Tools ( mulLists , defaultElem ) where mulLists :: [[a]] -> [[a]] mulLists [] = [[]] mulLists (xs:xss) = [ x:xs_ | x <- xs, xs_ <- mulLists xss ] defaultElem :: a -> [a] -> [a] defaultElem dflt [] = [ dflt ] defaultElem _ lst = lst