
Am Donnerstag 29 April 2010 22:39:05 schrieb Jean-Nicolas Jolivet:
Every solution I found was iterating to a list of character one character at a time, and outputting a character as a result (whether it is by recursion, mapping, etc..),
Well, that's necessary for what you want to do, isn't it?
however, what I was trying to explain in my previous post was that; when I am processing the escape character, this character should not be added to the resulting string... This is where I decided to use the Maybe monad..I'm just wondering if there is a better way...!
Depends on your criteria. For raw performance, I think the directly coded recursion is a bit better (btw, fooGen e esc norm = go False where go b (x:xs) | x == e = go True xs | b = esc x : go False xs | otherwise = norm x : go False xs go _ [] = [] ). For code cleanliness, catMaybes&zipWith and a good directly coded recursion are about equal. For leetness, the foldr is beats them, but surely one could do much 'better'.