By default, defining words take the names for the defined words from the input stream. Sometimes you want to supply the name from a string. You can do this with
nextnamec-addr u -- gforth ``nextname''
s" foo" nextname create
is equivalent to
Sometimes you want to define a word without a name. You can do this with
noname-- gforth ``noname''
To make any use of the newly defined word, you need its execution token. You can get it with
lastxt-- xt gforth ``lastxt''
E.g., you can initialize a deferred word with an anonymous colon definition:
Defer deferred noname : ( ... -- ... ) ... ; lastxt IS deferred
lastxt also works when the last word was not defined as
The standard has also recognized the need for anonymous words and provides
:noname-- xt colon-sys core-ext ``colon-no-name''
This leaves the execution token for the word on the stack after the
;. You can rewrite the last example with
Defer deferred :noname ( ... -- ... ) ... ; IS deferred
Go to the first, previous, next, last section, table of contents.