Re: [Haskell-cafe] Function to find a substring
R J wrote: 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? Thomas Hartman wrote: If you want to use libs to make your life easier, maybe something along these lines? Prelude Data.List.Split Safe ... True, those are both very nice libraries. It's just about as easy to do this with the more standard ones, though: Prelude Data.List Data.Maybe listToMaybe . map fst . filter ((asdf `isPrefixOf`) . snd) . zip [0..] . tails $ blee blah asdf bloo Just 10 Regards, Yitz ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Function to find a substring
Hi, R J wrote: 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? The naive algorithm of matching the second string on every position of the first string can be implemented as follows. import Data.List (findIndex, tails) findSubstringIndex text pattern = findIndex (pattern `isPrefixOf`) (tails text) Tillmann ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Function to find a substring
El dom, 06-06-2010 a las 15:51 +, R J escribió: 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? import Data.List f a b = findIndex (a `isPrefixOf`) (tails b) Jürgen ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Function to find a substring
If you want to use libs to make your life easier, maybe something along these lines? Prelude Data.List.Split Safe fmap length . headMay . split (onSublist asdf) $ blee blah asdf bloo Just 10 If they are big strings, it's probably faster to use bytestrings, or arrays of some kinds, rather than default List implementation of string. 2010/6/6 R J rj248...@hotmail.com: 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? Hotmail has tools for the New Busy. Search, chat and e-mail from your inbox. Learn more. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe