Updated README.
[scheme.forth.jl.git] / defer-is.4th
1 \ Words supporting deferred execution
2
3 : abort-defer
4     ." Tried to execute undefined deferred word." cr abort ;
5
6 : defer
7     create ['] abort-defer ,
8 does>
9     @ execute
10 ;
11
12 hide abort-defer
13
14 : defer! ( cfa cfaDef -- )
15     >body ! ;
16     
17
18 : is immediate
19     bl word find
20
21     0= abort" Tried to define unknown deferred word."
22
23     state @ 0= if
24         defer!
25     else
26         ['] lit , , ['] defer! ,
27     then
28 ;
29
30 : :noname
31     here current @ 1+ @ ,
32     current @ 1+ !
33     0 ,
34     here docol ,
35     [compile] ] ;
36
37
38 \ Need this for tail call optimization
39
40 : goto-deferred ( cfa -- )
41     R> drop >body @ >body >R ;