diff options
| author | HorseMD <alightedness@gmail.com> | 2014-11-14 10:51:22 +0000 | 
|---|---|---|
| committer | HorseMD <alightedness@gmail.com> | 2014-11-14 10:51:22 +0000 | 
| commit | 13a3c113940c74f9e0847dd2cfd767c07ac0a7b9 (patch) | |
| tree | f43d38e2b1175d8d6b544bb1482c3283bef9ed88 /forth.html.markdown | |
| parent | eb83f36015e6e666603645394aa61d1bd8153dac (diff) | |
More rewording, mention ?do.
Diffstat (limited to 'forth.html.markdown')
| -rw-r--r-- | forth.html.markdown | 24 | 
1 files changed, 16 insertions, 8 deletions
| diff --git a/forth.html.markdown b/forth.html.markdown index 46b912b4..b8b751d9 100644 --- a/forth.html.markdown +++ b/forth.html.markdown @@ -67,11 +67,10 @@ Forth, but most of what is written here should work elsewhere.  \ ------------------------------ Creating Words -------------------------------- -\ Quite often one will want to write their own words. -: square ( n -- n ) dup * ;    \ ok -  \ The `:` word sets Forth into compile mode until it sees the `;` word. +: square ( n -- n ) dup * ;    \ ok +\ We can view what a word does too:  see square     \ dup * ; ok  \ -------------------------------- Conditionals -------------------------------- @@ -101,19 +100,22 @@ myloop  \ Hello!  \ Hello! ok -\ `do` expects two numbers on the stack: the end number and the index number. +\ `do` expects two numbers on the stack: the end number and the start number.  \ We can get the value of the index as we loop with `i`:  : one-to-12 ( -- ) 12 0 do i . loop ;     \ ok  one-to-12                                 \ 0 1 2 3 4 5 6 7 8 9 10 11 12 ok -: squares ( n -- ) 0 do i dup * . loop ;  \ ok -10 squares                                \ 0 1 4 9 16 25 36 49 64 81 ok + +\ `?do` works similarly, except it will skip the loop if the end and start +\ numbers are equal. +: squares ( n -- ) 0 ?do i dup * . loop ;  \ ok +10 squares                                 \ 0 1 4 9 16 25 36 49 64 81 ok  \ Change the "step" with `+loop`: -: threes ( n n -- ) do i . 3 +loop ;    \ ok +: threes ( n n -- ) ?do i . 3 +loop ;    \ ok  15 0 threes                             \ 0 3 6 9 12 ok -\ Finally, while loops with `begin` <stuff to do> <flag> `unil`: +\ Indefinite loops with `begin` <stuff to do> <flag> `unil`:  : death ( -- ) begin ." Are we there yet?" 0 until ;    \ ok  \ ---------------------------- Variables and Memory ---------------------------- @@ -195,9 +197,15 @@ myfloatingvar f@ f.       \ 4.4 ok  \ specifically for that:  clearstack +\ Clear the screen: +page +  \ Loading Forth files:  \ s" forthfile.fs" included +\ You can list every word that's in Forth's dictionary (but it's a huge list!): +\ words +  \ Exiting Gforth:  \ bye | 
