+str: Implement efficient stream op DSL

Explanation in the doc comment for Interpreter
It looks like this object can be shared across different interpreters (i.e. put in the companion object).