diff --git a/README.md b/README.md index 85daf3e..34cc98e 100644 --- a/README.md +++ b/README.md @@ -7,3 +7,35 @@ the language it's interpreting. PARSE/WORD and the input stream handling was the first place this became obvious. This design is a dead end. The path forward would be stripping it back to primitives and rewriting the outer interpreter in Forth. + +Here are things it can do today: + +Print some terms of the fibonacci sequence: +``` +: over >r dup r> swap ; +: fib recursive r> drop over + swap dup . dup 144 - ? fib ; +: fib 1 0 fib ; + +fib +1 1 2 3 5 8 13 21 34 55 89 144 ok +``` + +Compute the number of cans in a triangular stack of height n. +For example a stack of height 3 contains 6 cans. +``` + x + x x +x x x +``` + +``` +variable cans +: c recursive r> drop dup cans @ + cans ! 1 - dup ? c ; +: c c ; +: can-stack 0 cans ! c cans @ ; + +3 can-stack . +6 ok +10 can-stack . +55 ok +```