next up previous contents index
Next: Dreams.4th Up: Dreams Previous: Advertised Interface   Contents   Index



Demonstration

This listing is a log of an interactive demonstration run. The indented lines are inputs to the Forth system, and the non-indented lines are the output from the Forth system.


    VARIABLE X    1 X !         		\ make some variables...
    VARIABLE Y    2 Y !
    VARIABLE Z    3 Z !

    : ? @ . ; ( variable -- )   		\ print the value of a variable

    : DOT ( n -- )              		\ another way to print a number
          0 <# # # # # #>       		\ with leading zeros
          TYPE CR ;             		\ and a carriage return

    NIL VAR[ X Y ] DREAM snooze 		\ a dream about a couple of variables
 
    ESSENCE snooze RELAPSE nap  		\ a different version of the same dream
 
    { X ? Y ? Z ? } THOUGHT hmm 		\ a thought about 3 variables
 
    hmm STUPOR                  		\ ponder it in reality
1 2 3  

    hmm snooze                  		\ and again in a dream
1 2 3  

    100 X !                     		\ change the variables
    200 Y !
    300 Z !
 
    hmm STUPOR                  		\ ponder it again in reality
100 200 300  

    hmm snooze                  		\ and again in the dream
1 2 300  

    { 10 X ! 20 Y ! 30 Z ! } snooze		\ make a change in the dream
 
    hmm snooze                  		\ what was the effect?
10 20 30  

    hmm STUPOR                  		\ what was the effect on reality?
100 200 30  

    hmm nap                     		\ what is the other dream thinking?
1 2 30  

    NIL REF[ . ] TRANCE FUE     		\ a class of dreams about a colon definition
 
    FUE FOO                     		\ a dream of that class
 
    FUE BAR                     		\ another dream of the same class
 
    hmm FOO                     		\ try it out
100 200 30  

    hmm BAR                     		\ try that one too
100 200 30  

    ' DOT ' . ESSENCE FOO IMAGINE		\ imagine that . behaves differently
 
    hmm FOO                     		\ exhibit the new behavior
0100
0200
0030
 
    hmm BAR                     		\ show that BAR was unaffected
100 200 30  

    { hmm BAR } FOO             		\ a dream within a dream
100 200 30  

    { hmm FOO } snooze          		\ same dream, but within a different dream
0010
0020
0030
 
    { { hmm BAR } FOO } snooze  		\ this can go as far as you like!
10 20 30  

    { hmm nap } FOO             		\ showing FOO's . still holds in nap
0001
0002
0030
 
    { hmm REGRESS } FOO         		\ regress back from foo to reality
100 200 30  

    { { hmm nap } REGRESS } FOO 		\ more advanced navigation of the dream world
1 2 30  

    { X ? } snooze              		\ show snooze's understanding of the variable
10  

    { REALLY X ? } snooze       		\ show early binding to a variable
100  

    { X @ . } FOO               		\ show FOO's understanding of .
0100
 
    { X @ REALLY . DID } FOO    		\ show early binding to a colon definition 
100  

    VISION[ BAR FOO snooze ] BAZ  		\ make a vision to show how that works
 
    hmm BAZ                     		\ should be same as:
10 20 30  					\ { { hmm BAR } FOO } snooze

    VISION[ FOO BAR snooze ] BOK  		\ should print with leading zero
 
    hmm BOK                     		\ try it and see
0010
0020
0030
 
    hmm ESSENCE snooze SEE      		\ test of atomic dream passed to SEE
10 20 30  

    VISION[ FOO BAZ ] BACH      		\ make a nested dream
 
    hmm BACH                    		\ test of a nested dream
0010
0020
0030
 
    VISION[ FOO COMA BACH ] HANDEL 		\ doubly nested dream with null in middle
 
    hmm HANDEL                  		\ try that one on for size!
0010
0020
0030
 
    VISION[ BAR HANDEL ] MOZART 		\ exception link to override FOO
 
    hmm MOZART                  		\ show that it works
10 20 30  

    { hmm REALITY } HANDEL      		\ test reality word
100 200 30



Robert J. Brown
1999-09-26