// f : Matcher -> S static S regexReplace(S s, S pat, O f) { Matcher m = Pattern.compile(pat).matcher(s); ret regexReplace(m, f); } static S regexReplace(Matcher m, O f) { new StringBuffer buf; while (m.find()) m.appendReplacement(buf, m.quoteReplacement(str(callF(f, m)))); m.appendTail(buf); ret str(buf); } sS regexReplace(Matcher m, IF1 f) { ret regexReplace(m, (O) f); }