Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.forth > #135555
| Path | csiph.com!eternal-september.org!feeder.eternal-september.org!nntp.eternal-september.org!.POSTED!not-for-mail |
|---|---|
| From | Kragen Javier Sitaker <kragen@canonical.org> |
| Newsgroups | comp.lang.forth |
| Subject | dynamic scoping in Forth in one line of code (was Re: coroutines) |
| Date | Fri, 04 Sep 2026 13:04:10 -0300 |
| Organization | Primarily biological and memetic |
| Lines | 27 |
| Message-ID | <87ik4l6m11.fsf_-_@debian> (permalink) |
| References | <87bjamc5xh.fsf@debian> <nnd$4aef30ef$417a695d@6608074c8df9df23> <874igd9fjt.fsf@debian> <nnd$5e90e337$543815e0@6eeb63a0693c71c3> <875x0oa6fy.fsf@debian> <87ecfcld9r.fsf@nightsong.com> <87mrtxzz0p.fsf_-_@debian> <6a9a560f$1@news.ausics.net> |
| MIME-Version | 1.0 |
| Content-Type | text/plain |
| Injection-Date | Fri, 04 Sep 2026 16:06:30 +0000 (UTC) |
| Injection-Info | dont-email.me; logging-data="839551"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19BWzWllvm0+r2xIYumERkQ"; posting-host="19f430bbdbc28c507341c3e22c7199b5" |
| User-Agent | Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux) |
| Cancel-Lock | sha1:E3srk+SgneAffUXOzr1szdJP62E= sha1:rtbJkMWDR7uytR31Mk+zmTsQ+Hk= sha256:9QbaDBy2Pf7hC2o9mDNGPUgWEwhNhV/yuipe1xBn+lo= sha1:jhWhhyx+ypri4csur6+7t7lGM3A= sha256:g06DbyQx4kb/3bgep1YQndgMVtvDFstMkral8Otf+a0= |
| Xref | csiph.com comp.lang.forth:135555 |
Show key headers only | View raw
dxf <dxforth@gmail.com> writes: > I'm more pragmatist, so if it solves an existing problem then I'm interested. > For years I knew how to 'localize' variables. But it was all done manually. > When Albert and Hans showed me how to implement it simply and with auto-restore, > it made my day. > > : ;: >r ; > > : LOCAL ( x adr -- ) r> -rot dup @ over 2>r ! ;: 2r> ! ; > > \\ Example > variable A variable B 8 a ! 7 b ! > > : divide ( a b -- ) > b local a local a @ b @ / . cr ; > > 15 3 divide a ? b ? > > I use it where re-entrancy is required. While I have loadable 'real' locals, > I hardy bother as this is simpler. This seems to provide exactly the same dynamic-scoping functionality as the `let!` I posted, but with a simpler implementation! How would you extend it to support `throw`? Kragen
Back to comp.lang.forth | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
dynamic scoping in Forth in one line of code Kragen Javier Sitaker <kragen@canonical.org> - 2026-08-28 18:04 -0300
Re: dynamic scoping in Forth in one line of code Paul Rubin <no.email@nospam.invalid> - 2026-08-28 18:12 -0700
Re: dynamic scoping in Forth in one line of code Kragen Javier Sitaker <kragen@canonical.org> - 2026-08-29 10:50 -0300
Re: dynamic scoping in Forth in one line of code albert@spenarnc.xs4all.nl - 2026-08-29 12:10 +0200
Re: dynamic scoping in Forth in one line of code Kragen Javier Sitaker <kragen@canonical.org> - 2026-08-29 11:17 -0300
Re: dynamic scoping in Forth in one line of code albert@spenarnc.xs4all.nl - 2026-08-30 12:49 +0200
Re: dynamic scoping in Forth in one line of code Kragen Javier Sitaker <kragen@canonical.org> - 2026-09-01 20:38 -0300
Re: dynamic scoping in Forth in one line of code Paul Rubin <no.email@nospam.invalid> - 2026-09-01 17:15 -0700
coroutines (was Re: dynamic scoping in Forth in one line of code) Kragen Javier Sitaker <kragen@canonical.org> - 2026-09-03 20:38 -0300
Re: coroutines (was Re: dynamic scoping in Forth in one line of code) dxf <dxforth@gmail.com> - 2026-09-04 15:24 +1000
dynamic scoping in Forth in one line of code (was Re: coroutines) Kragen Javier Sitaker <kragen@canonical.org> - 2026-09-04 13:04 -0300
Re: dynamic scoping in Forth in one line of code (was Re: coroutines) dxf <dxforth@gmail.com> - 2026-09-05 02:59 +1000
csiph-web