module ListUtils ( pad_left_to, pad_right_to, splitWith ) where -- Stolen from ByteString. Splits a list at each element satisfying -- the predicate p. splitWith :: (a -> Bool) -> [a] -> [[a]] splitWith p xs = ys : case zs of [] -> [] _:ws -> splitWith p ws where (ys,zs) = break p xs -- Pads a list (on the left) to length len by prepending pad_elem. pad_left_to :: Int -> a -> [a] -> [a] pad_left_to len pad_elem xs = if (length xs) >= len then xs else (replicate padcount pad_elem) ++ xs where padcount = len - (length xs) -- Pads a list (on the right) to length len by appending pad_elem. pad_right_to :: Int -> a -> [a] -> [a] pad_right_to len pad_elem xs = if (length xs) >= len then xs else xs ++ (replicate padcount pad_elem) where padcount = len - (length xs)