## January 30, 2017
### Formatted String Output in RETRO 12
For simple output Retro provides a few functions:
* putn
* putc
* puts
And so on. Each handles a specific type. The problem: displaying multiple things can get messy.
Consider:
#1 putn $+ putc #2 putn
$= putc #3 putn
With formatted output strings this can become:
#3 #2 #1 '%n+%n=%n putsf
Formatting Options:
A \ denotes a control character. Currently this supports:
* \n - newline
* \t - tab
A % denotes a stack value to display. This currently supports:
* %c - character
* %s - string
* %n - number
Anything else is displayed as the character.
````
{{
:char fetch-next
$n [ nl ] case
$t [ ASCII:HT putc ] case
putc ;
:obj fetch-next
$c [ swap putc ] case
$s [ swap puts ] case
$n [ swap n:to-string puts ] case
putc ;
:display
$\ [ char ] case
$% [ obj ] case
putc ;
---reveal---
:putsf
[ repeat
fetch-next 0; display
again
] call drop ;
}}
````