A quotation is an anonymous colon definition inside another colon
definition. Quotations are useful when dealing with words that
consume an execution token, like catch
or
outfile-execute
. E.g. consider the following example of using
outfile-execute
(see Redirection):
: some-warning ( n -- ) cr ." warning# " . ; : print-some-warning ( n -- ) ['] some-warning stderr outfile-execute ;
Here we defined some-warning
as a helper word whose xt we could
pass to outfile-execute. Instead, we can use a quotation to define
such a word anonymously inside print-some-warning
:
: print-some-warning ( n -- ) [: cr ." warning# " . ;] stderr outfile-execute ;
The quotation is bouded by [:
and ;]
. It produces an
execution token at run-time.
[:
( compile-time: – quotation-sys flag colon-sys ) gforth-1.0 “bracket-colon”
Starts a quotation
;]
( compile-time: quotation-sys – ; run-time: – xt ) gforth-1.0 “semi-bracket”
ends a quotation