retroforth/example/naming-quotes.retro
crc 6a4aaf8eac prefix: namespace is now sigil:, rename words, update examples, update docs
FossilOrigin-Name: 25cf19660ab7728d7bfee2722ea826a8a438faf92b2504b28d922d2958906aed
2021-03-30 11:58:25 +00:00

38 lines
751 B
Forth

# Naming Quotes
Anonymous functions called quotes are used heavily by Retro.
This shows a way to attach names to them.
In a classic Forth, words are created using `:`, which is
one of numerous parsing words. So a named function looks
like:
: foo ... ;
In Retro, there are no parsing words. There is a sigil
handler `:`, yielding:
:foo ... ;
Quotes start with `[` and end with `]`. So they look like:
[ ... ]
If we want to name a quote, we need to:
- create a header
- assign the xt field to the quote address
- set the class handler
This word, `def`, does these.
~~~
:def (as-) d:create d:last d:xt store &class:word reclass ;
~~~
An example of using this:
```
[ 'Hello_%s!\n s:format s:put ] 'hello def
'#forth hello
```