Sujet : Re: In C world they invented FORGET and DP lately
De : clf (at) *nospam* 8th-dev.com (Ron AARON)
Groupes : comp.lang.forthDate : 08. May 2025, 11:55:46
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vvi2jh$1n1h4$1@dont-email.me>
References : 1 2 3 4 5
User-Agent : Mozilla Thunderbird
On 08/05/2025 13:43, Hans Bezemer wrote:
On 08-05-2025 11:30, dxf wrote:
On 8/05/2025 6:39 pm, LIT wrote:
Aimless fiddlers should just switch to Forth.
>
In next 20 years they'll figure out how to FORGET
a function.
>
I can't remember the last time I forgot something.
Actually - I use it daily. Note that 4tH has no word sets and no namespaces. Coming from C - I never felt I needed them. What I *did* have was "static" - which allowed me to hide those functions which weren't important for the API of that module.
So I added HIDE to 4tH, to clean up modules for that very purpose. Usually, all non-public words are named like (NAME) - according to the rules set in "Thinking Forth". Which already helps to avoid any collisions, since even *if* they were previously used, they would be hidden by now.
So its' not uncommon to see some - or even rather large - lists of HIDEs at the end of a module. Note I don't have to do them by hand, this one does it for me: https://sourceforge.net/p/forth-4th/code/HEAD/tree/ trunk/4th.src/makehide.4th
Other Forths had HIDE, so I borrowed it. There is no UNHIDE or equivalent because 4tH can't. The thing is thrown out of the symbol table completely on HIDE.
Also, the size of the symbol table is determined by (amongst others) HIDE. Defining words expand the size of the symbol table, HIDE reduces it. That's why you can't make HIDE act conditionally by [IF] and [THEN] - since at that stage, the system is unable to evaluate such expressions.
In fact, that's where I use 'forget' in 8th. When I "need" a library file, it can have "private" words which go in a special namespace. At the end of processing the library, I forget that namespace and so the words are truly invisible outside of the library scope.