Post by Hans BezemerThis is gonna get me lose a lot of subscribers, but it has been a hot
topic on YT. So I had to address it sooner or later.
Still, there is a little known implementation of Locals that looks like
Chuck Moore could have invented it - if he had wanted to.
Anyways, I expanded it into a fully Forth 2012 compliant 4tH
implementation, which essentially means you can now port your locals
infested programs to 4tH without ever changing a line.
I hope you are happy now :)
http://youtu.be/Y7cax2fDS84
I was impressed with the Behringer solution.
(I didn't care about the politically correct solution.)
====================================
: local{ R> SWAP DUP >R @ >R >R ;
: }global R> R> R> ! >R ;
=================
But I can do you one better.
Remember the word ;: from colorforth. That is actually a coroutine call.
I call it CO. (Present in ciforth since the year 00)
An example of its use is the following:
:NONAME .S ; ' LIST decorated
decorated is not the point. The noname decorates LIST with
the anonymous function, so that the stack is printed, before LIST.
Now we go one step further:
:NONAME .S CO ." AFTER " .S ; ' LIST decorated
The noname decorates LIST with the anonymous function, so that the
stack is printed, before, but now noname is suspended, LIST is
executed as a coroutine, and afterword the stack is printed once more.
With CO the example become
---------------------------------------
: LOCAL R> SWAP DUP >R @ >R >R CO R> R> ! ;
VARIABLE A
VARIABLE B
: divide
A LOCAL
B LOCAL
B ! A ! A @ B @ /
. CR
;
15 3 divide
---------------------------------------
This saves a definition and a word-of-code, and a line for every
LOCAL used. Now that is closer to what Chuck Moore would have used.
Remember for Moore CO aka ;: is a standard word.
CO is not standard but it should be, and it is elementary as hell.
******************************************************
* The code for CO is one third of the code of R>. *
******************************************************
Look for yourself e.g. https://github.com/albertvanderhorst/ciforth
Groetjes Albert
P.S. This doesn't convince me to use local values.
--
Temu exploits Christians: (Disclaimer, only 10 apostles)
Last Supper Acrylic Suncatcher - 15Cm Round Stained Glass- Style Wall
Art For Home, Office And Garden Decor - Perfect For Windows, Bars,
And Gifts For Friends Family And Colleagues.