Usually a pattern
var result = init for (foo <- bar) { result = f(result, foo)} result
can be expressed functionally as
bar.foldLeft(init)(f)
So, for your case, this is becomas:
libMap.foldLeft(exp){ case(result, (k,v)) => result.replace(k, "(%s)".format(v))}
sepp2k
source share