[Haskell-cafe] Re: Function to find a substring

Paul R paul.r.ml at gmail.com
Tue Jun 8 11:08:44 EDT 2010


>>> What's an elegant definition of a Haskell function that takes two strings
>>> and returns "Nothing" in case the first string isn't a substring of the
>>> first, or "Just i", where i is the index number of the position within the
>>> first string where the second string begins?

my quick take, with Maybe and fmap :

substringP :: String -> String -> Maybe Int
substringP _ []  = Nothing
substringP sub str = case isPrefixOf sub str of
  False -> fmap (+1) $ substringP sub (tail str)
  True  -> Just 0

-- 
  Paul


More information about the Haskell-Cafe mailing list