# RETRO Quick Reference

Displaying Things
-----------------

Numbers
=======

    #100 putn


Characters
==========

    $a putc


Strings
=======

    'hello,_world puts


Mixed
=====

    #1 #2 #3  '%n_-_%n_=_%n\n s:with-format puts
    'Charles' 'Hello_%s\n     s:with-format puts


Conditionals
------------

Equality
========


    #2 #3 eq?


Inequality
==========

    #3 #4 -eq?


Greather Than
=============

    #3 #4 gt?


Less Than
=========

    #3 #4 lt?


Greater Than or Equal To
========================

    #3 #4 gteq?


Less Than or Equal To
=====================

    #3 #4 lteq?


String Equality
===============

    'hello  'world  s:eq?


String Inequality
=================

    'hello  'world  s:eq? not


If / Then
=========

    #1 #2 eq? [ 'true  ] [ 'false ] choose
    #1 #2 eq? [ 'true  ] if
    #1 #2 eq? [ 'false ] -if


Multiple Comparisons
====================

    [ @Base
       #8  [ 'octal       ] case
      #10  [ 'decimal     ] case
      #16  [ 'hexadecimal ] case
      drop (default_case)
    ] call


Function Defintions
-------------------

Quotes (Anonymous)
==================

    [  (code)  ]

Quotes can be nested.


Named
=====

    :name  (stack_comment)
      (code) ;

Quotes can be nested inside a named function.


Loops
-----

Unconditional
=============

    repeat (code) again

Conditional loops are generally preferable.


Counted
=======

    (simple,_no_index_on_stack)
    #10 [ $a putc ] times


Conditional
===========

    #10 [ n:dec dup putn dup n:-zero? ] while


Math
----

Addition
========

   #100 #200 +


Subtraction
===========

    #400 #32 -


Multiplication
==============

    #98 #12 *


Division
========

    #200 #4 /


Remainder
=========

    #203 #4 mod


Power
=====

Raise 3 to the second power.

    #3 #2 n:pow


Absolute Value
==============

    #-76 n:abs


Minimum and Maximum Value
=========================

    #34 #8 n:min
    #34 #8 n:max
