tphyahoo wrote:
So the core question (speaking as a perler) is how do you write

  my $s= 'abcdefg';
  $s =~ s/a/z/g;
  $s =~ s/b/y/g;
  print "$s\n";

 in haskell? There are various haskell regex libraries out there,

But that's such a perler attitude. When all you have is a regex, everything looks like a s///!

This really doesn't look like much of a regex question to me. A more haskelly answer might be as simple as:

m 'a' = 'z'
m 'b' = 'y'
m  x  = x

test1 = map m "abcdefg"

...which is general in the sense that 'm' can be an arbitrary function from Char -> Char, and avoids the 'overlapping replace' behaviour alluded to elsewhere in this thread, but is limited if you wanted to do string-based replacement.

To do string-based replacement you do have to think careful about what semantics you're expecting though (w.r.t. overlapping matches, repeated matches, priority of conflicting matches).

Jules
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to