In fact, this problem is so severe (every proc returning a string is affected) I thought about more language support for it:
Every routine `foo(result: var T; args)` can be used as an expression of type `T` via the transformation into `(var res = default(T); foo(res, args); res)`
