Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I’m relatively unfamiliar with lisps. Are all S-expression languages not created relatively equal? What is the difference between a “good” S-expression language and a “poor” one?



Well, tastes in programming languages differ from person to person of course; you may as well ask what makes Ada better or worse than Pascal or Algol68 and Rust.

I personally am very fond of the strong support SBCL has for type checking, which is something I find many Lisp-inspired languages just don't seem to care about.

Every programming language has its strengths and weaknesses, S-expression based languages are no exception, though what I consider a weakness in a language someone else may consider a strength. Things that come to mind immediately are CL's case insensitivity (Ricardo Signes' talk A Million Billion Squiggly Characters touches on the problems with case insensitiveness), Clojure's decision to randomly use square brackets for expressions that have no need for them (this is one thing I know that other people are fans of), and Bel's streams operating on bits (as in 1/8th of a byte).

Though what got me to try CL in the first place was someone mentioning that SBCL is fast, and given that it is still a GCed language, it really is. With Scheme I was bouncing back and forth between Scheme and C because I was unsatisfied with the performance, but with CL I don't feel a need to use C as it is fast enough.


Many Common Lisp users unfortunately have this tendency to refer to other Lisp dialects as "not real Lisp" and often don't bother to explore the value propositions of the newer dialects, particularly Clojure-inspired dialects such as Janet. At least, this has been my experience as a Clojure user for several years now.


I would think that there are many dialects, but they share a common core. Common Lisp is just one. Others would be Emacs Lisp, Visual Lisp, Interlisp, Standard Lisp, ISLisp (which is an ISO standardized Lisp). Something like Janet is further away, given that it is not a 'List Processor' - it does not use linked lists as a core data structure. It would be more a 'Maps Processor'. Rounded parentheses are neither sufficient nor necessary to be a 'real Lisp'. In a wider definition JavaScript is a Lisp. Maybe, but IMHO it is not very helpful to and it's not the most important categorisation for it. Personally I would also think that a language is not less useful/interesting when not labelled as core Lisp. A label does not make a language 'better' or 'worse', it just makes clear what to expect.

> often don't bother to explore the value propositions of the newer dialects

There are a lot of languages I would find interesting, besides those that one might or might not label as 'Lisp': Prolog, Erlang, Julia, Rust, OCAML, ...


There is endless variety in lisps and lisp-like languages. It's one of this language family's greatest strengths, and greatest weaknesses.




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

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

Search: