OK, what about this suggestion in the OO spirit of Ruby?

     puts <<("interpolate", "indent", "indent terminator")|EOS
            |   string
            EOS

where the args can be strings or symbols, or possibly an array. I.e.
treat << as a method call that can take parmeters. If/when we get
named parameters then "margin" = "|", or that could be done with a
hash, or some such could be added.

The main diffculty I see with this is: What is the |EOS passed in
as?  I suppose at present it doesn't have a type in the same way
that | in thing{|p} print p} doesn't -- it is probably just a token
for the parser.  There may be difficulties here, because we can't
insist that << has brackets for this style of parameterisation,
because of introducing an exception to the general rule that methods
don't *need* parentheses.

        Hugh