[Haskell-cafe] trivial function application question
J. Garrett Morris
trevion at gmail.com
Thu Jan 4 16:50:12 EST 2007
On 1/4/07, brad clawsie <clawsie at fastmail.fm> 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, replace),
> (pattern, replace)...(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.
It is myself I have never met, whose face is pasted on the underside of my mind.
More information about the Haskell-Cafe