Proposal #1464: add dropPrefix to Data.List

Ian Lynagh igloo at
Tue Jun 26 21:26:05 EDT 2007

Hi all,

I seem to have a copy of this function in everything I write sooner or
later, so I'd like to propose its addition to Data.List. It strips a
prefix from a list and, if successful, returns the tail. I often use it
with pattern guards:

    foo :: String -> IO ()
    foo x
     | Just y <- dropPrefix "foo=" = putStrLn ("foo is " ++ show y)
    foo _ = putStrLn "Unknown"

but you can of course achieve the same by using case etc.

The definition is:

    dropPrefix :: Eq a => [a] -> [a] -> Maybe [a]
    dropPrefix [] ys = Just ys
    dropPrefix (x:xs) (y:ys)
     | x == y = dropPrefix xs ys
    dropPrefix _ _ = Nothing

Let's try 11 July for a discussion deadline.


More information about the Libraries mailing list