News for hackers. Stuff that matters.
Re:NewLisp by david-given on Friday October 07, 2016 @05:18AM (#12659217)
A brief skim of the document suggests:

- single-reference-only for expressions (so, static object lifetime); deletion is delayed until a stack slot gets reused, allowing return values

- assignment to variables or values passed into functions are done by copy

- EXCEPT certain types are passed into functions by reference as an optimisation

So, basically, values are owned by either the stack or a variable. Assignment to a stack cell destroys what was there before. To keep a stacked value, it needs to be copied into a variable.

That all seems pretty intelligent, and I might steal the idea; except that I don't see any mention of how cyclic data structures or mutable data structures are implemented. Does anyone know how these are handled?

Re:NewLisp by astrobe_ on Friday October 07, 2016 @07:02AM (#12659659)
For mutable structures you use the "context" concept, which is also used to build a form of OOP.

For cyclic data structures, I'm not sure. I think one can pass a function, a list or a context to a function that expects a list. This it might do the trick.

Re:NewLisp by david-given on Friday October 07, 2016 @02:20PM (#12662761)
From Wikipedia:

> Sharing of sub-objects among objects, cyclic structures, or multiple variables pointing to the same object are not supported in newLISP.

Dang.