Thanks Lutz,
Dmi posted the dynamic scoping/recursion trick. Credit where credit is due.
Eddie
newLISP now on Graham's list
The problem (or technical misunderstanding) with contexts in newlisp is caused by the fact, that they are proposed not only for namespace-modules, but for regular variable tricks (for ex., for the access by reference).Unused memory is collected, newLISP does recycle unused memory, it just does it in a different way, not using traditional garbage collecting techniques like mark/seep and refernece counting.
Contexts/name spaces have nothing to do with this. In fact namespaces in other interpreted languages are done in a simiar fashion. They only differ in the way they organize symbols internally, some (like newLISP) use binary trees, others use hash tables.
Let me explain:
Code: Select all
newLISP v.8.7.0 on Win32 MinGW, execute 'newlisp -h' for more info.
> (set 'ctx:var 1)
1
> (let ((ctx:var 5)) ctx:var)
5
> ctx:var
1
> (let ((ctx1:var 7)) ctx1:var)
7
> ctx1:var
nil
> (context? ctx1)
true
>
But the contexts themselves are NOT: if I create dynamic context variable, it will be destroyed when the code block is closed, but the context definition itself stays persistent.
Most people (and me too) have logical expectations that context will be destroyed as well.
The real expectation: the context symbols must behave like regular symbols:
- there must be a way to create them in MAIN (function 'context' does that)
- there must be a way to create dynamic context with 'let' declaration.
-- Such context must be initially clean (if not initialized imlicitly), despite of contents of the overlapped one.
-- This context must be destroyed according to common rules for 'let'.
-- It will be nice to have a native way to return context contents (can be partially imitated with 'source')
- there must be a way to reference to current dynamic scope context or to global defined context in MAIN.
Something like this :-)
P.S. yes, in most cases at present we can approve a small dictionary overhead for contexts that will rest after dynamic variable declaration, but potentially, in situations of namespace overlapping, this will be the point of errors.
WBR, Dmi
And now, an application of "The Test of Time"
Hmmm ... I know what's broken beyond repair -- and it's not newLISP -- it's Kogut, the language designed by the "impressive" genius Qrczak himself! The download page on SF, linked to from the main page, indicates no significant developer activity in several years. (Changing references to the author's email address in the source code listings 3 weeks ago, of course, doesn't count as "significant developer activity".)Qrczak wrote:I'm afraid [newLISP] is ... broken beyond hope of repair. It could be improved in minor ways ... but it's too little, to [sic] late.
Here's the user hangout: http://sourceforge.net/mailarchive/foru ... ogut-users. It's mostly Qrczak and some dude named "Daniel" talking back at each other as if it were their private forum. Hardly any of the activity that goes on here. (One wonders, then, if Qrczak and Daniel are not indeed the same person.)
The FAQ is also telling.
Ha! There is no community. Kogut is dead. This brings to mind something that John Small said at the time: "The open market of ideas will insure the drift wood is carried out to sea and forgotten." This piece of driftwood is long gone.The Genius's Sole Minion wrote:The focus of the development of Kogut is making the code work correctly, not make [sic] it well-documented. Once Kogut has a stable codebase with tons of libraries, Marcin will spend more time on improving the documentation, but until then, it's up to the community.
Rest in Peace, Kogut!
(λx. x x) (λx. x x)
-
- Posts: 2038
- Joined: Tue Nov 29, 2005 8:28 pm
- Location: latiitude 50N longitude 3W
- Contact:
Re: newLISP now on Graham's list
:)
Still, satisfaction ratings in the Kogut community must have been near 100% for most of its life, so that's something worth praising...
Still, satisfaction ratings in the Kogut community must have been near 100% for most of its life, so that's something worth praising...
Re: newLISP now on Graham's list
AHA! So thats the language Qrczak was bragging about years ago...
Lisp/scheme still has the longest breath ;-) hahahah...
Lisp/scheme still has the longest breath ;-) hahahah...
-- (define? (Cornflakes))