Elmord's Magic Valley

Computers, languages, and computer languages. Às vezes em Português, sometimes in English.

On Scheme's minimalism

2017-09-14 19:34 -0300. Tags: comp, prog, lisp, scheme, pldesign, ramble, in-english

[This post started as a toot, but grew slightly larger than 500 characters.]

I just realized something about Scheme.

There are dozens, maybe hundreds, of Scheme implementations out there. It's probably one of the languages with the largest number of implementations. People write Schemes for fun, and/or to learn more about language implementations, or whatever. The thing is, if Scheme did not exist, those people would probably still be writing small Lisps, they would just not be Scheme. The fact that Scheme is so minimal means that the jump from implementing an ad-hoc small Lisp to implementing Scheme is not that much (continuations notwithstanding). So even though Scheme is so minimal that almost everything beyond the basics is different in each implementation, if there were not Scheme, those Lisps would probably still exist and not have even that core in common. From this perspective, Scheme's minimalism is its strength, and possibly one of the reasons it's still relevant today and not some forgotten Lisp dialect from the 1970s. It's also maybe one of the reasons R6RS, which departed from the minimalist philosophy, was so contentious.

Plus, that core is pretty powerful and well-designed. It spares each Lisp implementor from part of the work of designing a new language, by providing a solid basis (lexical scoping, proper closures, hygienic macros, etc.) from which to grow a Lisp. I'm not one hundred percent sold on the idea of first class continuations and multiple values as part of this core*, and I'm not arguing that every new Lisp created should be based on Scheme, but even if you are going to depart from that core, the core itself is a good starting point to depart from.

[* Though much of the async/coroutine stuff that is appearing in modern languages can be implemented on the top of continuations, so maybe their placement in that core is warranted.]

Comentários / Comments (2)

Schemmer, 2017-09-15 17:35:39 -0300 #

Só passei pra fazer propaganda de um c*****inho voador:

shift/reset, 2023-05-10 17:08:39 +0000 #

You're not the only one who thought about this. https://okmij.org/ftp/continuations/against-callcc.html

Maybe call/cc & dynamic-wind should be deprecated in future RnRS. We can have delimited continuation & undelimited continuation on separate SRFIs.

Deixe um comentário / Leave a comment

Main menu

Recent posts

Recent comments


em-portugues (213) comp (145) prog (70) in-english (59) life (48) unix (36) pldesign (36) lang (32) random (28) about (28) mind (26) lisp (24) mundane (22) fenius (21) web (20) ramble (18) img (13) hel (12) rant (12) privacy (10) scheme (10) freedom (8) lash (7) music (7) bash (7) academia (7) copyright (7) esperanto (7) shell (6) home (6) mestrado (6) misc (5) android (5) emacs (5) conlang (5) politics (4) worldly (4) book (4) latex (4) editor (4) etymology (4) php (4) tour-de-scheme (3) c (3) kbd (3) network (3) security (3) film (3) wrong (3) poem (2) cook (2) wm (2) treta (2) philosophy (2) llvm (2) lows (2) physics (2) comic (2) x11 (1) perl (1) golang (1) audio (1) old-chinese (1) translation (1) ai (1) kindle (1) german (1) pointless (1) en-esperanto (1)


Quod vide

Copyright © 2010-2023 Vítor De Araújo
O conteúdo deste blog, a menos que de outra forma especificado, pode ser utilizado segundo os termos da licença Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International.

Powered by Blognir.