splitByList :: Eq a => [a] -> [a] -> [[a]]
splitByList sep l = case l of
    [] -> [[]]
    h : t -> case stripPrefix sep l of
      Just suf -> [] : splitByList sep suf
      Nothing -> let f : r = splitByList sep t in (h : f) : r

{- | If the given string is terminated by a decimal number
this number and the nonnumber prefix is returned. -}
splitByList :: Eq a => [a] -> [a] -> [[a]]
splitByList sep l = case l of
    [] -> [[]]
    h : t -> case stripPrefix sep l of
      Just suf -> [] : splitByList sep suf
      Nothing -> let f : r = splitByList sep t in (h : f) : r

{- | If the given string is terminated by a decimal number
this number and the nonnumber prefix is returned. -}
splitByList sep l = case l of
    [] -> [[]]
    h : t -> case stripPrefix sep l of
      Just suf -> [] : splitByList sep suf
      Nothing -> let f : r = splitByList sep t in (h : f) : r

{- | If the given string is terminated by a decimal number
this number and the nonnumber prefix is returned. -}