Shop OBEX P1 Docs P2 Docs Learn Events
I'm Australian and I use Forth — Parallax Forums

I'm Australian and I use Forth

Peter JakackiPeter Jakacki Posts: 10,193
edited 2015-07-11 23:07 in General Discussion
I was having a laugh at the last thread about programming languages and countries including my own, but for the life of me I can't understand the moderation out of left field that was applied. Of course it's not our forum, we just do all the talking, but considering the light hearted nature of the thread in question I find it incredible that anybody could ever be insulted. In fact it is fairly typical of an Aussie to poke fun and stir-up a mate only to get some back in return, that's to be expected, give and take, in a friendly way, never malicious. If we go and sulk and carry on like a baby who needs a nanny to protect them then it's time we grew up. I just wish the world would grow up.
«1

Comments

  • ercoerco Posts: 20,256
    edited 2015-02-04 16:06
    Good on ya, Peter. I think chatting about countries is fine & dandy here.

    You Aussies are very fun-loving have a great thing going down under, other than making margaritas with an egg. In a nice Sydney bar, Rocks area, October 1985, a bartender made me a yellow margarita. The only drink I have ever sent back. Fortunately he was a very friendly fellow and I got him sorted out with my favorite recipe. 1/8 lime juice, 1/8 triple sec, 1/4 tequila and 1/2 sweet & sour mix. Zero eggs.

    Uh-oh. Alcohol talk. I may have just crossed the line... :)
  • JonnyMacJonnyMac Posts: 9,105
    edited 2015-02-04 16:13
    The first time I went down under I was in transit between Los Angeles and Sidney when Saddam Housein invaded Kuwait. During the course of that trip -- on hearing my SoCal accent -- Aussies of all striped would slap me on the shoulder and say, "We're with you mate, let's go kick his @ss!" I had a great time, and have never felt more welcomed as an American in any country I've visited. I can't wait to go again -- and if I can make it happen, I'm taking you to dinner, Peter, so you can straighten me out vis-a-vis Tachyon/Forth. :)

    As Eric brought up alcohol... you know why they call that beer XXXX? Because they can't spell SH*T! An Aussie friend told me that, and I have no idea what that beer tastes like. :)
  • David BetzDavid Betz Posts: 14,516
    edited 2015-02-04 16:38
    I'm from New Hampshire and I would use Forth if I was smart enough to understand more than just trivial examples. :-(
  • Martin_HMartin_H Posts: 4,051
    edited 2015-02-04 16:46
    I'm in Massachusetts and I occasionally use FORTH. I've never been to Australia, although I'd love to go there someday.

    This thread reminds me that I need to try and bring up FIG FORTH on my retro computer.
  • Peter JakackiPeter Jakacki Posts: 10,193
    edited 2015-02-04 17:06
    JonnyMac wrote: »
    The first time I went down under I was in transit between Los Angeles and Sidney when Saddam Housein invaded Kuwait. During the course of that trip -- on hearing my SoCal accent -- Aussies of all striped would slap me on the shoulder and say, "We're with you mate, let's go kick his @ss!" I had a great time, and have never felt more welcomed as an American in any country I've visited. I can't wait to go again -- and if I can make it happen, I'm taking you to dinner, Peter, so you can straighten me out vis-a-vis Tachyon/Forth. :)

    As Eric brought up alcohol... you know why they call that beer XXXX? Because they can't spell SH*T! An Aussie friend told me that, and I have no idea what that beer tastes like. :)

    I was in DFW during Desert Storm and drank all the buds that weren't being drunk by you guys :) I don't know why they call it XXXX even though that's our local beer in Brisbane but I know three Xs can kill ya! So I guess they are saying "something is bound to kill us in the end, so don't mess around, just enjoy it"

    btw, we wouldn't kick his poor donkey, we are a bit more vulgar when we say it properly as @Rse :)

    Also, the only way to straighten you out with Forth is to assimilate you and make you a part of the Forth collective. Just like each Prop cog is like a Borg, working together in a collective. Resistance is futile.
  • idbruceidbruce Posts: 6,197
    edited 2015-02-04 17:07
    I almost missed the fine print :)
    Last edited by Peter Jakacki; Today at 06:47 PM. Reason: I caint spel
  • NWCCTVNWCCTV Posts: 3,629
    edited 2015-02-04 17:31
    Basic(lly): Blame Canada!!!
  • User NameUser Name Posts: 1,451
    edited 2015-02-04 17:32
    Resistance is futile. At length it became clear to me that the only accommodation that would bring peace to the soul was to program in FORTH, C, SPIN, and ASM every day. In fact, the first task after finishing a project is to implement it on a different chip and in a different language.
  • kwinnkwinn Posts: 8,697
    edited 2015-02-04 20:03
    NWCCTV wrote: »
    Basic(lly): Blame Canada!!!

    Geez, thanks. What did I miss that brought this on?
  • kwinnkwinn Posts: 8,697
    edited 2015-02-04 20:09
    Never mind, I found the offending thread. Gee, lighten up. Anyone taking offence at that needs help.
  • msrobotsmsrobots Posts: 3,709
    edited 2015-02-04 20:12
    kwinn wrote: »
    Geez, thanks. What did I miss that brought this on?

    You know - they are strong enough to handle anything. They wouldn't mind in general.

    Enjoy!

    Mike
  • LoopyBytelooseLoopyByteloose Posts: 12,537
    edited 2015-02-04 22:29
    Maybe Parallax should create a 'wall of shame' and list the top ten that are posting to locked out threads. Every forum has its bad boys that just don't seem too aware of what they are up to... compulsive, narssitic, and so on (not so forth!).

    Nothing wrong with Aussies or Forth. But both are often misunderstood. If the USA hadn't had a Revolutionary War, they would all be living in the U.S.A. today. Forth may not be the best language for all and everything, but it is empowering and educational. Those that skip it seem to just want to ignore the low level details and processor architecture (unless they are Assembler purist). The world is full of computer language snobs that only prefer the language that they are presently compulsively obsessing about.
  • GadgetmanGadgetman Posts: 2,436
    edited 2015-02-04 23:55
    While most users will take the comparison between programming languages and countries in good humour, there are those who will take it as an insult.
    As this is a forum frequented by children, the mods try to keep everything positive.
    The thread was funny(or at least I thought so), but it wasn't exactly PC (Parallax Compliant)...
  • Heater.Heater. Posts: 21,230
    edited 2015-02-05 00:05
    My apologies to anyone offended by my little jokes here http://forums.parallax.com/showthread.php/159978-Language-Wars-(redux)-If-programming-languages-were-countries.......
    Offence was not my intention. As the late great Kenny Everett used to say, "It's all done in the best possible taste".

    I'm with Peter that forum moderation can seem over motherly sometimes and political correctness can be really annoying (not pointing at this forum in particular)

    But I do realize that in text, over the net, without the face to face context of meat space, what is intended as humour can easily be received badly.
  • lanternfishlanternfish Posts: 366
    edited 2015-02-05 00:57
    JonnyMac wrote: »
    ... As Eric brought up alcohol... you know why they call that beer XXXX? Because they can't spell SH*T! An Aussie friend told me that, and I have no idea what that beer tastes like. :)

    Here in NZ we end the joke with "because they can't spell beer". Of course NZ beers are superior to Aussie beers ;-)

    No flames please, I'm an Ocker, too.
  • MJBMJB Posts: 1,235
    edited 2015-02-05 00:58
    David Betz wrote: »
    I'm from New Hampshire and I would use Forth if I was smart enough to understand more than just trivial examples. :-(

    Hey David,
    you know LISP.
    And FORTH (maybe especially TACHYON) gives you lot's of the features from LISP you rarely find.
    LISP is prefix - not the usual infix.
    So FORTH is just the other way round.
    It really took me a while to get used to it.
    You know PASM - then it's fun to read the TACHYON source code
    (that's how I learnt PASM ;-) )
    Don't give up too soon.
    If you need a little support - the TACHYON forum is there.
  • LoopyBytelooseLoopyByteloose Posts: 12,537
    edited 2015-02-05 02:43
    I must admit that trying to moderate forum content for young users and provide a discussion level for users that are actually interested in creating their own microcontrller is a bit schizophrenic.

    Is Parallax targeting a mythical child genus out there? Neither Bill Gates nor Steve Jobs really did very much in their childhood. Bill did figure out Basic, but his mom got him the Microsoft deal and he delivered an OS that he couldn't write himself (possibly with a load from Dad). Steve Jobs had the Woz doing all the initial heavy thinking and mostly just demanded others to do everything his way.

    Admittely, Thomas Edison, Henry Ford, and others weren't much better. But none of them depended on a website to fulfull their success story. It seems to all be a futuristic mythology.

    BTW, it seems nobody took the bait with my suggestion of a 'Wall of Shame'. I am sure Parallax wouldn't do such a thing.

    But trying to actuall start a language war? Is that a worthy contribution to the community?

    LISP? Why would anyone ever name an artifical intelligence language after a speech impediment?

    Beer? Lisp? OMG, these are four letter words..... lock the thread.
  • MJBMJB Posts: 1,235
    edited 2015-02-05 03:15
    LISP? Why would anyone ever name an artifical intelligence language after a speech impediment?
    LISP = LISt Processor
    because lists are the basic data structure.
    Even a program is just a list.
    - but you might know this :-)
  • LoopyBytelooseLoopyByteloose Posts: 12,537
    edited 2015-02-05 03:23
    Yesp.... I knew that... Thanksss......

    Programmers are bit twisted. We have Yak and Bison, Python, Lisp, Forth, and much more.

    And don't forget Bash, and the wacky world of Unix utilities.
  • David BetzDavid Betz Posts: 14,516
    edited 2015-02-05 04:17
    MJB wrote: »
    Hey David,
    you know LISP.
    And FORTH (maybe especially TACHYON) gives you lot's of the features from LISP you rarely find.
    LISP is prefix - not the usual infix.
    So FORTH is just the other way round.
    It really took me a while to get used to it.
    You know PASM - then it's fun to read the TACHYON source code
    (that's how I learnt PASM ;-) )
    Don't give up too soon.
    If you need a little support - the TACHYON forum is there.
    Yes, I know there is plenty of support here. I hope to get to this at some point but probably not until my work schedule settles down a bit. I can certainly see an advantage to learning more about Tachyon in particular if I want to get the most out of the P1.

    If Forth is so much like Lisp, how can I do the following? :-)

    (mapcar (lambda (x) (+ x 2)) '(1 2 3 4 5))
  • Martin_HMartin_H Posts: 4,051
    edited 2015-02-05 04:51
    David, I've done it in gforth. I wrote a function called apply which takes an execution token and a pointer to a list on the stack. It iteratively calls the execution token traversing the list until it hits null. After writing it I started thinking that building a Lisp in Forth would actually be possible.
  • David BetzDavid Betz Posts: 14,516
    edited 2015-02-05 04:53
    Martin_H wrote: »
    David, I've done it in gforth. I wrote a function called apply which takes an execution token and a pointer to a list on the stack. It iteratively calls the execution token traversing the list until it hits null. After writing it I started thinking that building a Lisp in Forth would actually be possible.
    Interesting. I guess I need to learn about execution tokens. I didn't now it was possible to pass one Forth word as an argument to another or to invoke a Forth word indirectly though a reference to it.
  • Martin_HMartin_H Posts: 4,051
    edited 2015-02-05 10:26
    Here's selection sort and bubble sort written in FORTH using execution tokens coupled with my apply function. It's a little different than I remembered, as it applies a function to an array, not a list. But the basic concept is similar.
    \ Swaps the values at two different cell addresses
    : cell_swap ( addr1 addr2 -- )
       2dup              \ duplicate both addresses
       L@	             \ load from addr2 (addr2 consumed)
       >r                \ push value onto return stack
       L@                 \ load from addr1 (addr1 consumed)
       swap L!            \ put data under addr2 and store (addr2 consumed)
       r>                \ load addr2's origina value from return stack
       swap L! ;          \ save to addr1
    
    \ Compares values at two different cell addresses and puts flag on stack
    : cell_greater? ( addr1 addr2 -- flag )
       L@	             \ load from addr2 (addr2 consumed)
       swap L@            \ load from addr1 (addr1 consumed)
       swap > ;          \ correct order of values and compare.
    
    \ Applies the execution token n1 times to arguments further
    \ down the stack which are used by the token function.
    \  token - execution token of comparison function
    \  n1 - the number of times to apply the function.
    : apply \ ( token n1 -- )
       >r \ copy n1 to return stack
       begin
          \ preserving a copy of the token, but execute it also.
          >r r@ execute r>
    
          \ move n1 to data stack, decrement, preserve and test.
          r> 1- dup >r 0=
       until
       r> drop drop ;
    
    \ Applies the execution token n1 times to arguments further
    \ down the stack which are used by the token function. Loops
    \ if the execution function returned true and the count is
    \ not zero.
    \  token - execution token of comparison function
    \  n1 - the number of times to apply the function.
    : apply? \ ( token n1 -- )
       >r \ copy n1 to return stack
       begin
          \ preserving a copy of the token, but execute it also.
          >r r@ execute
    
          \ Test the return function's flag
          if
             \ move token back
             r>
             \ decrement and test the count, but preserve it.
             r> 1- dup >r 0=
          else
             \ move token back and push exit flag
             r> true
          then
       until
       r> drop drop ;
    
    \ Used to allocate an array of cells of the desired size passed on stack
    : array	( n -- addr )
       create
         cells	     \ converts count into size in bytes
         here over erase \ clear the buffer and
         allot           \ allocate space
       Does>
         swap cells  + ; \ run time gives address of cell at index
    
    10 array foo
    
    \ load an array named foo with values for test.
    : foo_init
       4 0 foo L!
       3 1 foo L!
       9 2 foo L!
       7 3 foo L!
       14 4 foo L!
       0 5 foo L!
       13 6 foo L!
       27 7 foo L!
       101 8 foo L!
       1 9 foo L! ;
    
    : foo_dump
       0 foo ? 1 foo ? 2 foo ? 3 foo ? 4 foo ? 5 foo ? 6 foo ? 7 foo ? 8 foo ? 9 foo ? ;
    
    foo_init
    
    \ Used to set up loop limits from current addresses on
    \ the stack.
    \  addr1 - the stop address of the cells to sort
    \  addr2 - the start address of the cells to sort
    \  token - execution token of comparison function
    : selection_push_limits ( addr1 addr2 token --- addr1 addr2 token limit start )
       >r                \ save the comparison function
       over cell +       \ set up loop limits
       over
       r>                \ get the token
       -rot ;            \ push it under loop limits
    
    \ Variation on the classic selection sort, always o(n^2),
    \ but it is simple and generic because it uses an execution
    \ token to compare cells.
    \
    \  addr1 - the stop address of the cells to sort
    \  addr2 - the start address of the cells to sort
    \  token - execution token of comparison function
    : selection_sort ( addr1 addr2 token --- )
       selection_push_limits
       do		     \ from addr1 to addr2 step cell
          selection_push_limits
          drop i cell +
          ?do	     \ from i+1 to addr2 step cell
             dup j i rot \ compare j and its adjacent cell
             execute if
                j i cell_swap
             then
          cell +loop
       cell +loop
       drop drop drop ;
    
    foo_dump
    9 foo 0 foo ' cell_greater? selection_sort
    foo_dump
    
    \ inner loop of bubble sort, worst case is o(n^2), it performs
    \ a single bubble up oeration.
    \  addr - the starting address of the cells to sort
    \  count - the number of cells to sort
    \  token - execution token of comparison function
    \ returns
    \  swapped - flag to indicate if a swap was performed.
    : bubble_up_loop? ( addr count token -- addr count token swapped )
       \ compute do loop limits
       >r over over cell * + >r over r> swap r> -rot
    
       \ push the flag under the loop limits
       false -rot
    
       \ from addr1 to addr2-cell step cell
       do
          \ stack contains addr count token swapped
          swap           \ bring the comparison function to tos
          dup i i cell + rot \ compare i and its adjacent cell
          execute if
             i i cell + cell_swap
             swap        \ bring swapped to tos and or with true
             -1 or
          else
             swap        \ bring swapped to tos only
          then
       cell +loop ;
    
    \ Classic bubble sort, worst case is o(n^2), but often
    \ better for nearly sorted data.  Also generic because
    \ it uses an execution token to compare cells.
    \
    \  addr - the starting address of the cells to sort
    \  count - the number of cells to sort
    \  token - execution token of comparison function
    : bubble_sort ( addr1 addr2 token --- )
       over
       ['] bubble_up_loop?
       swap
       \ stack has addr, count, and token for apply?
       apply?
       \ pop off the preserved arguments.
       drop drop drop ;
    
    foo_init
    foo_dump
    0 foo 10 ' cell_greater? bubble_sort
    foo_dump
    

    It might not be the best FORTH either. I wrote it as a learning exercise before I had the FORTH chops to write something more complicated.
  • Heater.Heater. Posts: 21,230
    edited 2015-02-05 10:40
    To be Australian may be regarded as a misfortune; to use Forth looks like carelessness.

    To paraphrase Oscar Wild.

    Martin, that line noise you posted in code block above is why most sane humans stay away from Forth.

    Only joking guys, honest, ouch stop beating on me....
  • Dave HeinDave Hein Posts: 6,347
    edited 2015-02-05 11:00
    Martin, that is nice Forth code, but I have to agree with Heater that it shows why most people stay away from Forth. If I correctly understand the line ">r over over cell * + >r over r> swap r> -rot" it's doing the Spin equivalent of "addr + count*cell". The whole bubble sort routine could be written in seven lines of Spin code. But sometimes it is nice to program in Forth. It's kind of like the programming equivalent of Sudoku, or other similar brain teaser puzzles.
  • David BetzDavid Betz Posts: 14,516
    edited 2015-02-05 11:17
    Dave Hein wrote: »
    Martin, that is nice Forth code, but I have to agree with Heater that it shows why most people stay away from Forth. If I correctly understand the line ">r over over cell * + >r over r> swap r> -rot" it's doing the Spin equivalent of "addr + count*cell". The whole bubble sort routine could be written in seven lines of Spin code. But sometimes it is nice to program in Forth. It's kind of like the programming equivalent of Sudoku, or other similar brain teaser puzzles.
    That might be true but as far as I know there is no equivalent to an "execution token" in Spin and there certainly aren't lambda expressions.
  • Dave HeinDave Hein Posts: 6,347
    edited 2015-02-05 11:24
    "lambda expression" -- I had to look that up. I guess it's like the function pointer in C. Spin doesn't have that, but I do have a MethodPointer object in the OBEX that implements something like a function pointer.
  • David BetzDavid Betz Posts: 14,516
    edited 2015-02-05 12:38
    Martin_H wrote: »
    Here's selection sort and bubble sort written in FORTH using execution tokens coupled with my apply function. It's a little different than I remembered, as it applies a function to an array, not a list. But the basic concept is similar.
    \ Swaps the values at two different cell addresses
    : cell_swap ( addr1 addr2 -- )
       2dup              \ duplicate both addresses
       L@	             \ load from addr2 (addr2 consumed)
       >r                \ push value onto return stack
       L@                 \ load from addr1 (addr1 consumed)
       swap L!            \ put data under addr2 and store (addr2 consumed)
       r>                \ load addr2's origina value from return stack
       swap L! ;          \ save to addr1
    
    \ Compares values at two different cell addresses and puts flag on stack
    : cell_greater? ( addr1 addr2 -- flag )
       L@	             \ load from addr2 (addr2 consumed)
       swap L@            \ load from addr1 (addr1 consumed)
       swap > ;          \ correct order of values and compare.
    
    \ Applies the execution token n1 times to arguments further
    \ down the stack which are used by the token function.
    \  token - execution token of comparison function
    \  n1 - the number of times to apply the function.
    : apply \ ( token n1 -- )
       >r \ copy n1 to return stack
       begin
          \ preserving a copy of the token, but execute it also.
          >r r@ execute r>
    
          \ move n1 to data stack, decrement, preserve and test.
          r> 1- dup >r 0=
       until
       r> drop drop ;
    
    \ Applies the execution token n1 times to arguments further
    \ down the stack which are used by the token function. Loops
    \ if the execution function returned true and the count is
    \ not zero.
    \  token - execution token of comparison function
    \  n1 - the number of times to apply the function.
    : apply? \ ( token n1 -- )
       >r \ copy n1 to return stack
       begin
          \ preserving a copy of the token, but execute it also.
          >r r@ execute
    
          \ Test the return function's flag
          if
             \ move token back
             r>
             \ decrement and test the count, but preserve it.
             r> 1- dup >r 0=
          else
             \ move token back and push exit flag
             r> true
          then
       until
       r> drop drop ;
    
    \ Used to allocate an array of cells of the desired size passed on stack
    : array	( n -- addr )
       create
         cells	     \ converts count into size in bytes
         here over erase \ clear the buffer and
         allot           \ allocate space
       Does>
         swap cells  + ; \ run time gives address of cell at index
    
    10 array foo
    
    \ load an array named foo with values for test.
    : foo_init
       4 0 foo L!
       3 1 foo L!
       9 2 foo L!
       7 3 foo L!
       14 4 foo L!
       0 5 foo L!
       13 6 foo L!
       27 7 foo L!
       101 8 foo L!
       1 9 foo L! ;
    
    : foo_dump
       0 foo ? 1 foo ? 2 foo ? 3 foo ? 4 foo ? 5 foo ? 6 foo ? 7 foo ? 8 foo ? 9 foo ? ;
    
    foo_init
    
    \ Used to set up loop limits from current addresses on
    \ the stack.
    \  addr1 - the stop address of the cells to sort
    \  addr2 - the start address of the cells to sort
    \  token - execution token of comparison function
    : selection_push_limits ( addr1 addr2 token --- addr1 addr2 token limit start )
       >r                \ save the comparison function
       over cell +       \ set up loop limits
       over
       r>                \ get the token
       -rot ;            \ push it under loop limits
    
    \ Variation on the classic selection sort, always o(n^2),
    \ but it is simple and generic because it uses an execution
    \ token to compare cells.
    \
    \  addr1 - the stop address of the cells to sort
    \  addr2 - the start address of the cells to sort
    \  token - execution token of comparison function
    : selection_sort ( addr1 addr2 token --- )
       selection_push_limits
       do		     \ from addr1 to addr2 step cell
          selection_push_limits
          drop i cell +
          ?do	     \ from i+1 to addr2 step cell
             dup j i rot \ compare j and its adjacent cell
             execute if
                j i cell_swap
             then
          cell +loop
       cell +loop
       drop drop drop ;
    
    foo_dump
    9 foo 0 foo ' cell_greater? selection_sort
    foo_dump
    
    \ inner loop of bubble sort, worst case is o(n^2), it performs
    \ a single bubble up oeration.
    \  addr - the starting address of the cells to sort
    \  count - the number of cells to sort
    \  token - execution token of comparison function
    \ returns
    \  swapped - flag to indicate if a swap was performed.
    : bubble_up_loop? ( addr count token -- addr count token swapped )
       \ compute do loop limits
       >r over over cell * + >r over r> swap r> -rot
    
       \ push the flag under the loop limits
       false -rot
    
       \ from addr1 to addr2-cell step cell
       do
          \ stack contains addr count token swapped
          swap           \ bring the comparison function to tos
          dup i i cell + rot \ compare i and its adjacent cell
          execute if
             i i cell + cell_swap
             swap        \ bring swapped to tos and or with true
             -1 or
          else
             swap        \ bring swapped to tos only
          then
       cell +loop ;
    
    \ Classic bubble sort, worst case is o(n^2), but often
    \ better for nearly sorted data.  Also generic because
    \ it uses an execution token to compare cells.
    \
    \  addr - the starting address of the cells to sort
    \  count - the number of cells to sort
    \  token - execution token of comparison function
    : bubble_sort ( addr1 addr2 token --- )
       over
       ['] bubble_up_loop?
       swap
       \ stack has addr, count, and token for apply?
       apply?
       \ pop off the preserved arguments.
       drop drop drop ;
    
    foo_init
    foo_dump
    0 foo 10 ' cell_greater? bubble_sort
    foo_dump
    

    It might not be the best FORTH either. I wrote it as a learning exercise before I had the FORTH chops to write something more complicated.

    Ummm... Thanks! Unfortunately, that looks like an example of the kind of Forth I'm not smart enough to read. However, this does something interesting enough that I may try to overcome that! :-)
  • Martin_HMartin_H Posts: 4,051
    edited 2015-02-05 12:52
    Lambda expressions are anonymous functions that are passed as arguments to another function. But they are usually bound to the scope of the function that contains them, which allows the lambda to access the variables in the parent's scope. Lisp, JavaScript, and C# programmers love 'em. But abuse them and your code will look like a pile of tangled slinkies in short order.

    I like the joke that Java's main contribution to programming was popularizing lambda expressions, because it didn't have them until the most recent version.
  • David BetzDavid Betz Posts: 14,516
    edited 2015-02-05 13:01
    I guess the key to your sort words are the following two constructs:
    ' cell_greater?
    
    I assume that this pushes the execution token of the word "cell_greater?" on the stack?

    and
    execute
    
    Which invokes the execution token on the top of the stack. Is that correct? Does Tachyon have these constructs?
Sign In or Register to comment.