Hacker News new | past | comments | ask | show | jobs | submit login

Lisps are more than just tracing GC and list processing.

There are implementations with other forms of memory management, and they have long supported other kinds of datastructures.




What would be the defining characteristics of Lisps, that separate them from other languages? Surely it can't be simply s-exps, since that is pretty much all GOAL and Lisps share. Would a C written in the form of s-exps qualify as a Lisp?


Being an homoiconic programming language for one, having a powerfull macro system is other.

Having s-exprs isn't necessarly required.

In fact, there was an Algol like language for Lisp, which was never adopted, as most people were confortable with s-expr, among other issues.

https://en.wikipedia.org/wiki/LISP_2

Dylan and Julia can also be considered Lisps.

Scheme, Interlisp, Common Lisp and many other flavours have support for all major data structures, not only lists.

Some Lisps like Common Lisp and Interlisp-D, also allow for stack allocation.

Some Lisps like Linear Lisp use linear types for memory management.

Some Lisps like Interlisp-D used reference counting.

As for the question, Lisp Machines and Interlisp exposed Assembly and low level primitives as Lisp functions.


Io and Rebol both have homo-iconicity and a macro system. Would you call them a Lisp? No wonder Lisp is the most powerful language in the world, when all powerful languages are secretly Lisp – without even knowing it!!!

I mean, the name "Lisp" is short for "List Processing", it's disingenuous to claim that Lisp doesn't need runtime List Processing.

https://iolanguage.org/

http://www.rebol.com/


> Lisp doesn't need runtime List Processing

Lisp needs list processing. But it's much more. Lisp has several kinds of numbers, symbols, strings, characters, vectors, arrays, hash tables, records, classes, objects, natively compiled functions, ... -> and all those are not made of lists. An array in Lisp is not made of lists underneath. A natively compiled function is not a list, it's a vector of machine code.


Putting aside the sarcasm, don't mistake Lisp from 1960 with what came after.

"First released in 1997, Rebol was designed over a 20-year period by Carl Sassenrath, the architect and primary developer of AmigaOS, based on his study of denotational semantics and using concepts from the programming languages Lisp, Forth, Logo, and Self. "

"Io is a pure object-oriented programming language inspired by Smalltalk, Self, Lua, Lisp, Act1, and NewtonScript.[2] Io has a prototype-based object model similar to the ones in Self and NewtonScript, eliminating the distinction between instance and class. Like Smalltalk, everything is an object and it uses dynamic typing. Like Lisp, programs are just data trees. Io uses actors for concurrency. "

Exercise for the reader how much from e.g. Common Lisp might be found in IO or Rebol.


My impression is that GOAL and Lisp shares quite a bit more.

https://opengoal.dev/docs/reference/lib

You might want to look at the features of real Lisp or Scheme implementations.


Not really, it did have first class symbols used for code/data hotloading, but otherwise it's mostly a C-with-classes in s-exprs.


did you look at the lib? Looks like what many Lisps have. The class stuff is also very Lisp like.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: