4 ms·
> 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
by 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...
- kbp 9y ago> 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 > What is left for you to consider modern? Scheme had all of these 30 years ago, and most of them 40. What kind of an argument are they that it's "modern"? > 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 > You're looking for the Exception stuff. [...] In fact, most other error systems are only there for backwards compatibility with previous versions of the Scheme standard. So which one is it? The second point seems to agree with lispm anyway; they complained about multiple redundant ways to do something in a "modern" language, and your explanation is that most of those ways are historical cruft.
- shakna 9y ago> What kind of an argument are they that it's "modern"? What would you consider a modern feature? I don't know of anything in the last ten years that could be considered new. This is the second time I'm asking, if no one can answer that... We can only have one conclusion: No language can be considered modern by this definition, rendering it fairly useless as a definition. --- > So which one is it? Allow me to quote myself: > You have the Exception system, used everywhere. When finer-grained control is desired, you also have that available > they complained about multiple redundant ways to do something in a "modern" language, and your explanation is that most of those ways are historical cruft. That was not my explanation. Some are historical, some giver finer grained access. syntax-error allows you to control error handling within macro-expansion time, for example. scm-error allows you to output your own backtrace, including asm if the compiler supports it, and strerr allows you to output Unix errors.
- kbp 9y ago> What would you consider a modern feature? For starters: one that was thought up (or at least added to the language, if we're being that context-sensitive) more recently than 30 years ago. > No language can be considered modern by this definition, rendering it fairly useless as a definition. I agree that it's a fairly useless descriptor.