5 ms·
> R7RS was finalised in 2013 Only the small language. Looks to me like a plain old Scheme slightly updated.
by 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
- lispm 9y ago> Define modern 'modern' was not my word. See the discussion above. > We refer to ES2017 as "modern" I'm not part of your 'we'. In the context of Javascript the newer iterations may be slightly more modern, but in the wider context of dynamic / dynamically typed language there is very little 'modern'. If you read the language deltas, they are not THAT impressive. > "Modern" tends to mean "under active work today" Not for me. See for example in a dictionary: 'involving recent techniques, methods, or ideas'. Much of the stuff in Scheme is decades old and has been provided incompatible in multiple ways, none really satisfying. See 'Error handling'. > I have no idea where you're pulling that from. Just look at the table of contents: https://www.gnu.org/software/guile/manual/guile.html#SEC_Contents https://www.gnu.org/software/guile/manual/guile.html#SEC_Con... > I don't see how that's a problem. Several error handling libraries, none really good and all not well integrated into the rest of the language. That's really basic stuff which hurts. Instead of at least an attempt at a coherent language it is a patchwork of tiny stuff. > In fact, what about SBCL? [1] What about it? > More detailed and just as straight-forward as SBCL's. SBCL has already the core language defined in detail. Example from above: there is one error handling mechanism (the Condition System) and it is used everywhere and it is well integrated.
- shakna 9y ago> Not for me. See for example in a dictionary: 'involving recent techniques, methods, or ideas'. Much of the stuff in Scheme is decades old and has been provided incompatible in multiple ways, none really satisfying. See 'Error handling'. Then nothing is modern in the programming language world, for you, and you're not up for a discussion. Rust's type safety is old, Scala's DOTTY is the exploration of combining several older theories to create DOT, and both of those are supposed to be cutting edge. Modern Scheme has: * Lazy, immutable, mutable subsets * Hygenic and unhygenic macros * Fast and simple error handling * Fast and simple compiling and evaluation * Tail call elimination * Procedures, closures, currying * Safe eval, and generative environments * Multi-threading and asynchronous callbacks It's simple and powerful enough that people commonly plug object-orientation, type safety and DSLs into it. What is left for you to consider modern? > Just look at the table of contents Wow. It looks like a table of contents. Starting with a short introduction, and slowly expounding on previous knowledge to detail the entire language. Looks remarkably similar to the manuals for SBCL and ECL, simpler than Python, Rust's Reference and Julia. All you're giving me... Is that you're afraid of TOC pages. Which I'm hoping is not the case. > Several error handling libraries, none really good and all not well integrated into the rest of the language. That's really basic stuff which hurts. Instead of at least an attempt at a coherent language it is a patchwork of tiny stuff. I cannot agree with you here. There are several ways of error handling, because error-handling lazy, immutable, mutable and object-oriented things can't be done in the same way, to the level of detail that Scheme will hand you. But, if you want one simple, high level approach to handle them all... You're looking for the Exception stuff. (with-exception-handler ...code... (exception-handler ...error handling func...)) Done. Easy. (In fact, most other error systems are only there for backwards compatibility with previous versions of the Scheme standard.) > In fact, what about SBCL? > What about it? It differs from the Common Lisp spec in much the same way as Guile, as the link pointed out. Apparently you find only one of these facts confusing. > SBCL has already the core language defined in detail. Example from above: there is one error handling mechanism (the Condition System) and it is used everywhere and it is well integrated. And the same is true of Scheme. You have the Exception system, used everywhere. When finer-grained control is desired, you also have that available. The Scheme "core language" is right here [1]. The semantics of the language are well spelled out, and the standard library is also spelled out. The only difference any compliant-implementation, like Guile, has, is a larger standard library. Any infix-operators, or S-XML, or any of these other things... Is just a library. Anything beyond r7rs-simple, is just a library. Your complaint with the spec seems to boil down to "Scheme keeps the most popular things around to make backwards-compatibility easy, and upgrading easy". [1] http://trac.sacrideo.us/wg/raw-attachment/wiki/WikiStart/r7rs.pdf http://trac.sacrideo.us/wg/raw-attachment/wiki/WikiStart/r7r...