flavio81
Joined 9 years ago
Joined 9 years ago
You're making two mistakes here:
1. Confusing "no allocation" with "avoiding the garbage collector". In non-GC languages like Rust or C there are instances you want to avoid allocation too.
2. Being oblivious that in the past many GC'd languages also had mechanisms for circunventing the garbage collector. Since long, long, long ago. Common Lisp for example (1981-). This is not a modern "realization" or "revelation".
This should be a BIG benefit for agent-driven development, but sadly it seems that few people is taking advantage of it.
This doesn't exactly mean immutable data structures are mandatory, but it helps.
In any case, most of the functions that operate on data structures in Lisp (or Common Lisp) do it in an immutable way.
Not exactly. Coalton brings ML-style strong typing to Common Lisp. But Coalton code is also Lisp code.
The backend, thus, is Common Lisp, and it is available at all times, thus leveraging all its power.
All this would not happen if RMS had chosen Common Lisp to implement it...
There have been two open source Lisp Machine OS created in the last 15 or 10 years.
However a big part of the power of the Symbolics/LMI machines was in the software itself (applications), and this is still propietary code.
To reimplement the Lisp Machine applications would take quite a big effort.
This project is nice, however if we don't have a specific, client-side IDE for interactive development, 70% of the power of Smalltalk is gone (one of the criticisms I give to Ruby)
How would one do to push changes to the web frontend (browser) without stopping the program ?
Then it becomes a concrete Lisp implementation and thus not unpredictable anymore.
Good luck with that.
Lisp's killer feature is procedural macros that are extremely easy to write and debug.
Lua doesn't have such a thing, that's why Fennel was created.
Erlang also doesn't have such a thing, that's why LFE was created.
based