Charles Childers


blog | parable | retro | ios apps | fountain pens


January 30, 2017

Formatted String Output in RETRO 12

For simple output Retro provides a few functions:

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:

A % denotes a stack value to display. This currently supports:

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 ;
}}