5 ms·
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 GO
by HexDecOctBin 4y ago
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?
- lispm 4y agoMy impression is that GOAL and Lisp shares quite a bit more. https://opengoal.dev/docs/reference/lib https://opengoal.dev/docs/reference/lib You might want to look at the features of real Lisp or Scheme implementations.
- HexDecOctBin 4y agoNot really, it did have first class symbols used for code/data hotloading, but otherwise it's mostly a C-with-classes in s-exprs.
- lispm 4y agodid you look at the lib? Looks like what many Lisps have. The class stuff is also very Lisp like.
- pjmlp 4y agoBeing 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 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.
- HexDecOctBin 4y agoIo 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/ https://iolanguage.org/ http://www.rebol.com/ http://www.rebol.com/
- pjmlp 4y agoPutting 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.
- lispm 4y ago> 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.