5 ms·
I have one simple test to determine is something is a Lisp. Does it fit the statement "The program is the data"? It is a simple statement that implies a whole l
by megaman821 17y ago
I have one simple test to determine is something is a Lisp. Does it fit the statement "The program is the data"? It is a simple statement that implies a whole lot of power in a language, like the ability for a program to create a new program.
- draegtun 17y agoNeither Io & Ioke are Lisp but both fit the statement The program is the data Also I think the the ability for a program to create a new program (I assume you mean on the fly) is probably inherent in all dynamic languages.
- avar 17y ago"Ability" doesn't imply "first-class support" or "good idea". In languages that aren't Lisp this usually ends up being done by passing a raw string to eval() which is extremely error prone. It's not something you do lightly. Constructing macros in Lisp however /is/ something you do lightly. A typical lisp program might have a 20/80 division of macros/functions. You aren't going to see a sane program in other languages that do the same thing.
- bad_user 17y ago> Constructing macros in Lisp however /is/ something you do lightly For all the ease with which one can create macros in LISP, I haven't seen anything comparable to LINQ yet. And while I've seen useful macros here and there, I haven't seen anything groundbreaking ... macros are mostly used when you need laziness. Powerful? Yes. Easy to use? No.
- lispm 17y agoIf you haven't seen anything, did you actually look around? Common SQL : http://www.lispworks.com/documentation/sql-tutorial/index.html http://www.lispworks.com/documentation/sql-tutorial/index.ht... (loop for columns being the records of [select [*] :from [SpeciesList] :where aardvark] do (print columns)) Common SQL provides some kind of embedded SQL that gets expanded with read macros and macros to more low-level Lisp code.
- draegtun 17y agoIo & Ioke are like Lisp here. You have full access to the parse tree and don't need to anything as crude as passing raw strings to eval().