Liste des Groupes | Revenir à cl forth |
On 2025-02-02 15:13, albert@spenarnc.xs4all.nl wrote:
>
>
Recursion is not necessary. It is enough to use the same-name "local"
variables in different functions, some of which throw exceptions, and
other catch exceptions.
>
An artificial example:
>
>
: local ( x2 addr1 -- ; R: nest-sys1 -- x1 addr1 nest-sys.xt nest-sys1 )
\ This definition assumes that nest-sys size is 1 cell,
\ and xt is a subtype of nest-sys
r> ( x2 addr nest-sys1 )
over dup @ >r >r [: 2r> ! ;] >r
( x2 addr1 nest-sys1 ) >r !
;
>
>
: idiv ( n1 n2\0 -- n3 | n1 0 -- never )
dup if / exit then -10 throw
;
>
variable a
variable b
>
: foo ( n1 n2 -- )
b local a local
a @ b @ idiv
." idiv result is " . cr
;
: bar ( u1 -- u1 )
a local
100 a @ ['] foo catch if 2drop then
a @
;
>
0 bar .
\ this must print 0, but will print 10
>
----
Ruvim
Les messages affichés proviennent d'usenet.