> Given these deep divisions over the essential nature of the Scheme language, does it even make sense that we still keep making a Scheme report?
> ‘No’ is an entirely possible answer to this question. Already in the R6RS and R7RS small days, people were arguing that Scheme standardization should stop.
> If we went this way then, just like Racket in its default mode no longer claims to be a Scheme report implementation, Schemes would slowly diverge into different languages. Guile Scheme would one day simply be Guile; Chicken Scheme would be Chicken, and so on. Like the many descendants of Algol 60 and 68, and the many dialects of those descendants, each of these languages would have a strongly recognizable common ancestor, but each would still be distinct and, ultimately, likely incompatible.
This would doom all of those variants to irrelevance even more than they already are.
To the degree that people want Scheme to be a useful language for writing programs that solve real-world problems, it needs an ecosystem. And in order to compete with other languages, that ecosystem needs to commensurate with the scale that those other languages have. Otherwise, it doesn't matter how elegant the syntax is or how powerful the macro system is. If user needs to talk to a database and there isn't a good database library, they aren't going to pick the language.
The Scheme ecosystem is already tiny when you lump all languages and their packages into one. Fragment that, and you're probably below viability for all of them.
Now, it is fine if the goal of Scheme is not writing programs to solve real-world problems. It may be just a teaching language. But the evidence seems to be that it's hard to motivate programming students to learn a language that they ultimately won't end up using.
I thought "this feels like Univers" when I saw the text. A quick check, and it turned out to be URW Classic Sans, a font that I had not heard about, but which is apparently a Univers clone. (Not to be confused with URW Classico, which is more like Optima. I also wonder how it relates to U001, another URW clone of Univers... just different names? U001 comes, or used to come at least, with GhostPCL under a non-commercial licence.)
I wish I saw what these guys do in scheme. I only barely know what is happening and it seems interesting.
The parens are so hard for me to follow and always have. I have yet to find an editor that fixes that. Perhaps I did not try enough or am not smart enough to acutally use the editors correctly.
The "such parens, much overwhelm, so confuse" attitude of non-Lispers always baffled me. Especially since when working in C-syntax languages, I'm cautious enough to enforce an explicit order of operations (to avoid confusion that can lead to errors) that I put nearly as many parens in my C or Java code as I do in my Lisp code. What's a few more pairs of round brackets among friends, eh?
Emacs was purpose-built for working in Lisp. Out-of-the-box it really helps with paren-matching by highlighting the matched bracket (of any type) when you cursor over a bracket (also works by highlighting the open when you type the close) and providing commands for traversing and selecting whole sexps. Those alone, combined with its smart indentation, will get you pretty far. Add something like Paredit or Parinfer if you want even more assistance with sexp manipulation.
This is a good starter. Technically, it's Lisp and not Scheme, but once you understand one, you get the other. The benefit of Emacs Lisp is you can immediately play with it by modifying Emacs to meet your needs.
Syntax is easy. Practical semantics is a little bit harder, but it's not hard.
Editor-wise, you want an editor that does automatic indenting and some kind of matching parentheses highlighting. Emacs is one. (Once you've learned the language, you can use a fancy structural editor, but maybe don't confuse yourself with too many new things at once.)
Working through all the exercises in "The Little Schemer" was a huge help for me when getting started. You start with a few primitives and build up all common tools from those with recursion, like how to build an addition function using just `add1` as an early example from the book.
munificent|4 months ago
> ‘No’ is an entirely possible answer to this question. Already in the R6RS and R7RS small days, people were arguing that Scheme standardization should stop.
> If we went this way then, just like Racket in its default mode no longer claims to be a Scheme report implementation, Schemes would slowly diverge into different languages. Guile Scheme would one day simply be Guile; Chicken Scheme would be Chicken, and so on. Like the many descendants of Algol 60 and 68, and the many dialects of those descendants, each of these languages would have a strongly recognizable common ancestor, but each would still be distinct and, ultimately, likely incompatible.
This would doom all of those variants to irrelevance even more than they already are.
To the degree that people want Scheme to be a useful language for writing programs that solve real-world problems, it needs an ecosystem. And in order to compete with other languages, that ecosystem needs to commensurate with the scale that those other languages have. Otherwise, it doesn't matter how elegant the syntax is or how powerful the macro system is. If user needs to talk to a database and there isn't a good database library, they aren't going to pick the language.
The Scheme ecosystem is already tiny when you lump all languages and their packages into one. Fragment that, and you're probably below viability for all of them.
Now, it is fine if the goal of Scheme is not writing programs to solve real-world problems. It may be just a teaching language. But the evidence seems to be that it's hard to motivate programming students to learn a language that they ultimately won't end up using.
michaelcampbell|4 months ago
Pinus|4 months ago
pklausler|4 months ago
Chinjut|4 months ago
soupy-soup|4 months ago
It doesn't have laziness nor is a functional programming language, but it does scratch that itch a bit.
anonnon|4 months ago
Why? What are the advantages, in practice, of lazy evaluation as the default?
deadthrowtrash|4 months ago
tonetheman|4 months ago
The parens are so hard for me to follow and always have. I have yet to find an editor that fixes that. Perhaps I did not try enough or am not smart enough to acutally use the editors correctly.
Anyway interesting read I think
bitwize|4 months ago
Emacs was purpose-built for working in Lisp. Out-of-the-box it really helps with paren-matching by highlighting the matched bracket (of any type) when you cursor over a bracket (also works by highlighting the open when you type the close) and providing commands for traversing and selecting whole sexps. Those alone, combined with its smart indentation, will get you pretty far. Add something like Paredit or Parinfer if you want even more assistance with sexp manipulation.
spit2wind|4 months ago
https://www.gnu.org/software/emacs/manual/eintr.html
neilv|4 months ago
Editor-wise, you want an editor that does automatic indenting and some kind of matching parentheses highlighting. Emacs is one. (Once you've learned the language, you can use a fancy structural editor, but maybe don't confuse yourself with too many new things at once.)
mylifeandtimes|4 months ago
print(foo)
get stuck at
(print foo)
I've always found the parenthesis comforting, we know where it starts and where it ends.
hellcow|4 months ago
Working through all the exercises in "The Little Schemer" was a huge help for me when getting started. You start with a few primitives and build up all common tools from those with recursion, like how to build an addition function using just `add1` as an early example from the book.
unknown|4 months ago
[deleted]