----------------------------------------------------------------------------- -- -- Module : Data.List.Util -- Copyright : (c) 2012-13 Brian W Bush -- License : MIT -- -- Maintainer : Brian W Bush -- Stability : Stable -- Portability : Portable -- -- | Miscellaneous functions for manipulating lists. -- ----------------------------------------------------------------------------- module Data.List.Util ( separate ) where -- | The 'separate' function splits a list into fragments separated by a given element. separate :: Eq a => a -- ^ The separating element -> [a] -- ^ The list to be separated -> [[a]] -- ^ The lists between the separating element separate _ [] = [] separate a s = let (l, s') = break (== a) s in l : case s' of [] -> [] [a] -> [[]] (_:s'') -> separate a s''