3 ms·
'modern' in the sense of Scheme being modern in 1975? SCHEME: An Interpreter for Extended Lambda Calculus, Sussman/Steele, 1975 https://dspace.mit.edu/handle/
by lispm 9y ago
'modern' in the sense of Scheme being modern in 1975?
SCHEME: An Interpreter for Extended Lambda Calculus, Sussman/Steele, 1975
https://dspace.mit.edu/handle/1721.1/5794 https://dspace.mit.edu/handle/1721.1/5794
- deleted 9y ago[deleted]
- SwellJoe 9y agoAccording to that logic, you'd have to call Lisp modern by 1958 standards.
- eadmund 9y agoNot really. The Common Lisp spec is quite a bit more modern than 1958 — and, unlike the several, not-universally-accepted Scheme specs, it's a well-crafted ANSI standard. It does suffer from backwards-compatibility, but it also enjoys the lessons of the past. Scheme is neat (in multiple meanings of the word), but honestly I don't think it's a good production tool. Being a Lisp-1 & lacking real macros means that it's more suited to being a pedagogical tool (n.b.: I believe that many Scheme implementations add real macros — but without a standard package system and a function namespace, this is not enough).
- shakna 9y ago> not-universally-accepted Scheme specs What do you mean by that? That implementers extend the language? > Being a Lisp-1 & lacking real macros Scheme has defmacro just like CL. You can modify the reader and change the AST. What does Scheme lack in macro-land? > but without a standard package system R7RS includes one. Currently implemented by Chez and Guile, to my knowledge
- shakna 9y agoR7RS was finalised in 2013. [0] Scheme is actively developed by a large community. [0] http://trac.sacrideo.us/wg/wiki/R7RSHomePage http://trac.sacrideo.us/wg/wiki/R7RSHomePage
- lispm 9y ago> R7RS was finalised in 2013 Only the small language. Looks to me like a plain old Scheme slightly updated.
- shakna 9y agoIsn't that what a standard should be? The first part of r7rs-large also got finalised as the Red Edition [0]. Scheme's roots do mean the standardisation process can move slowly at times, taking guidance from "living standards" like Chez. That's not necessarily a bad thing. The differences just tend to be including SRFIs, that everyone already use, in the standard. [0] http://trac.sacrideo.us/wg/wiki/RedEdition http://trac.sacrideo.us/wg/wiki/RedEdition
- lispm 9y agoSure, but I still don't get it, what makes it a 'modern' Lisp, since much of the stuff has been part of Lisp decades ago... Especially if you look at Guile, the manual looks frightening - an implementation which has no clear language design, but accumulates stuff from SRFIs, R6RS, R7RS, own stuff, ... often similar things in multiple different ways - just look at error handling and its multiple variants - none looks really compelling.
- shakna 9y agoDefine modern, otherwise you're going to go down a rabbithole where you can freely disagree with anybody. We refer to ES2017 as "modern", despite the fact that all it's shiny new features are ones that both CL and Scheme, and Smalltalk to a degree, had twenty years ago. "Modern" tends to mean "under active work today". C++17, PHP7, Python 3.7, all these are referred to as "modern". Scheme is actively developed today. That's modern enough. (And has had all the shiny features other language's consider "modern" for years). > Especially if you look at Guile, the manual looks frightening - an implementation which has no clear language design, but accumulates stuff from SRFIs, R6RS, R7RS, own stuff I have no idea where you're pulling that from. The language design seems clear enough [0] to me, in the manual. > but accumulates stuff from SRFIs, R6RS, R7RS, own stuff I don't see how that's a problem. Common libraries are included, as well as backwards compatibility, and some extensions. How is that different from GCC, MSVC, Luajit, etc? Even CPython has extensions on Python's language reference. In fact, what about SBCL? [1] The manual seems straight-forward, and easy to understand to me. No different from any other language manual. More detailed and just as straight-forward as SBCL's. [0] https://www.gnu.org/software/guile/manual/guile.html#About-Data https://www.gnu.org/software/guile/manual/guile.html#About-D... [1] http://www.sbcl.org/manual/#Idiosyncrasies http://www.sbcl.org/manual/#Idiosyncrasies