6 ms·
I don't think actual Lisp programmers share this obsession with purity and ideal forms. It's more something that shows up in blog posts about Lisp by people who
by mbrock 10y ago
I don't think actual Lisp programmers share this obsession with purity and ideal forms. It's more something that shows up in blog posts about Lisp by people who probably don't actually use it. The title of this one is telling: it's about "the idea of Lisp."
On the other hand, if you look at, say, ANSI Common Lisp, it's not at all some kind of perfectionistic attempt at divine elegance. It's a pragmatic compromise resulting from years, decades, of actual use on real computers.
Just browse around the SBCL compiler source code and you'll see that this stuff is developed by people who definitely aren't afraid of the messy practical reality of hardware:
https://github.com/sbcl/sbcl/tree/master/src/compiler/x86-64 https://github.com/sbcl/sbcl/tree/master/src/compiler/x86-64
Generally spend some time within the Lisp community and see how many people you see fretting over Platonic archetypal shapes and compare to people solving actual problems and using the language as just a nice way to program a computer.
Emacs is another example that demonstrates the spirit of actual Lisp programming as opposed to armchair theorizing about lambda calculus fundamentals.
- goatlover 10y agoBut then again, there's Scheme ...
- cicero 10y agoEven Schemes can take a practical turn, e.g. Racket.
- omaranto 10y agoOr Chicken.
- qwertyuiop924 10y agoRacket isn't Scheme. It is its own dialect. That's why it's no longer called Scheme. At present, there are only a few Schemes that are practical: Chicken, Guile, Chez, and Gambit seem to be the big players, with Cyclone, Chibi, and Bigloo bringing up the rear.
- dTal 10y agoWow, pedantic much? It started out as a pure Scheme, then "took a practical turn" as the parent said. You can still make it act like a pure Scheme with a #lang directive. It's also kind of funny that a handful of major, practical implementations is considered a low amount. Number of Python implementations? Between one and three, depending on definition. Number of Javas? 2 or 3 again. Number of Clojure implementations? One. Javascript? Half a dozen at most. Seems to me like the problem is standardization between these implementations, not overall number.
- grzm 10y agoNumber of Clojure implementations? One. At least three: - Clojure on the JVM: https://github.com/clojure/clojure https://github.com/clojure/clojure - ClojureScript (JavaScript): https://github.com/clojure/clojurescript https://github.com/clojure/clojurescript - Clojure on the CLR: https://github.com/clojure/clojure-clr https://github.com/clojure/clojure-clr
- dTal 10y agoI stand corrected. That was the only one I didn't check out. I didn't know about Clojure on the CLR but in fairness I should have remembered Clojurescript.
- qwertyuiop924 10y ago>pedantic much? Not at all. >It started out as a pure Scheme, then "took a practical turn" as the parent said. False. PLT Scheme, like all serious schemes, started out as Scheme extended for practical use. Racket, what PLT Scheme became, isn't an extended Scheme: it is a different language with its own semantics. That's not good, bad, or pedantic, but it is true. >You can still make it act like a pure Scheme with a #lang directive. No, you can make it use RnRS. The difference is that in actual Schemes, the language you write in is extended RnRS, not an entirely different language. At the end of the day, calling Racket a Scheme is like calling Java a C: they look similar, but they are radically different under the surface.
- pjmlp 10y agoSpecially since Lisp was once upon a time, also a systems programming language.
- QuadrupleA 10y agoThat's good perspective. My lens on it has mostly been stuff like SICP, Paul Graham's old essays, periodic Lisp HN posts etc. Good to hear there's a community out there that's fine with the messy practical stuff.
- pjlegato 10y agoANSI Common Lisp is rather a design-by-committee monstrosity which was forced on the unwilling Lisp vendors by the Defense Department. Most of the feature set was designed via backroom political horse trading ("We'll let you include pet feature X if you support us for our pet feature Y".) There is no coherent overall plan or design to it at all. (Source: personal communication from a member of the committee that designed it.) It's based on actual use on real computers of the late 1970s and early 1980s -- e.g. the file opening mechanism is a complex abstraction designed to support filesystem paradigms that nobody has used for 30 years, yet there is no standard way to open a TCP socket. I heartily recommend Clojure (clojure.org) as an alternative: a modern, pragmatic Lisp designed for 2016-era software engineering.
- cesarbs 10y agoWhat about ISLISP? Granted, there are much fewer implementations compared to CL.
- bluefox 10y agoWhy do you have to resort to such bullshit in order to promote your favorite language. Please back up your claims.
- qwertyuiop924 10y agoClojure's an odd, unlispish language, at least for us Lispers and Schemers. CL is still very good at what it does: all current implementations have solved many of the problems you mentioned, and there are a lot of libraries that will run across implementations. CL is a beast, but clojure is a mess. Scheme is elegant, but has a radically different, more ALGOL mentality than CL, at least in some respects. Some of it is good, some is bad. I love it, but there are things that I would rather program in CL any day. IMHO, clojure has neither the practicality of CL nor the elegance of Scheme. It has its advantages, but it's not ideal.
- anoctopus 10y agoCould you explain what you think is wrong with Clojure? Maybe it's because I've spent far more time using it than CL, but I see Clojure as having a very consistent, well designed core. It's very opinionated in it's design, but it's a practical and pragmatic one. I don't see what's unlispish about it.