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