Interpolate
Saturday, April 18, 2015
Today, I made some minor improvements to the interpolate vocabulary, which provides simple string interpolation and formatting.
We have had the ability to use named variables:
IN: scratchpad "World" "name" set
"Hello, ${name}" interpolate
Hello, World
But now we can just as easily use stack arguments (numbered from the top of the stack):
IN: scratchpad "Mr." "Anderson"
"Hello, ${1} ${0}" interpolate
Hello, Mr. Anderson
In any order, even repeated:
IN: scratchpad "James" "Bond"
"${0}, ${1} ${0}" interpolate
Bond, James Bond
As well as anonymously, by order of arguments:
IN: scratchpad "Roses" "red"
"${} are ${}" interpolate
Roses are red
And even mix named variables and stack arguments:
IN: scratchpad "Factor" "lang" set
"cool" "${lang} is ${0}!" interpolate
Factor is cool!
Right now we simply convert objects to human-readable strings using the present vocabulary. In the future, it would be nice to support something like Python’s string format specifications, which are similar but slightly different than our printf support.