On 1/4/07, brad clawsie <[EMAIL PROTECTED]> wrote:
lets say i have a string

s = "abcdefg"

now i have two lists of strings, one a list of patterns to match, and
a list of replacement strings:

patterns = ["a","b"]
replace = ["Z","Y"]

from which my intent is that "a" be replaced by "Z", "b" by "Y" etc

now using the replace function from MissingH.Str (which i know is now
renamed), i wish to apply replace to s using (pattern[0], replace[0]),
(pattern[1], replace[1])...(pattern[N], replace[N]).

You can create the replacing functions using zipWith :: (a -> b -> c)
-> [a] -> [b] -> [c] (from the Prelude) as follows:

replacers = zipWith patterns replace

You then need to apply these functions to your starting string s.  I
would probably use foldr for that, something like this:

foldr ($) s replacers

Where ($) performs function application.

As Neil points out, if your replacements overlap, this could cause
replacement text to itself be replaced.

/g

--
It is myself I have never met, whose face is pasted on the underside of my mind.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to