Faré’s comment (“R6RS … broke the community”) is apt. As far as I can tell (and I have discussed this with a few members of the Scheme community), Scheme is the language for people to experiment with language design. So no one wants a standard — they want to have their own variants.
Lisp was in that state early on. Then people decided they wanted to be able to do more “professional” stuff with Lisp. They agreed that a standard was needed, and Common Lisp was born.
I personally have moved on from the Lisp community and am using Julia. Julia macros are broken (Moon provided a fix, but they are unwilling to incorporate it because it might break existing uses), but they are usable. And the ecosystem around Julia is pretty good and improving. The community is quite active and very welcoming and supportive.
On Jun 25, 2024, at 4:55 PM, Faré fahree@gmail.com wrote:
On Tue, Jun 18, 2024, 05:08 Attila Lendvai attila@lendvai.name wrote:
yeah, but WITH-EXCEPTION-HANDLER is defined in R6RS, which is dated 2007.
Almost no one uses R6RS. It's the standard that broke the community (Racket left at that time).
I don't think either Gambit Scheme or Gerbil Scheme (that builds upon it) uses with-exception-handler natively, though we do provide it (the R7RS variant, through a compatibility layer).
Also speaking for Gerbil Scheme, we only just systematized exceptions as objects underneath, and don't use them well everywhere, notably because the built-in printer (inherited from Gambit) requires much love to reach the level of functionality of CL's (and surpass it? We need not just print-readable but print-evalable, or some more general print context object).
and while we are at it, the lisp-1/lisp-2 distinction (variable and function namespaces) is just something to get used to, it's easy.
Lisp-1 is slightly annoying at first, but it works decently with the hygienic macros.
yep, i admit that the argument for hygienic macros is very appealing, but i find it surprisingly hard to write my macros in scheme, even though i wrote countless non-trivial CL macros throughout the years.
While we're at it, I'd like to say that I used to think I understood macros well, but that was before I started using hygienic macros seriously. I still don't understand syntax-local-introduce — can someone explain it to me? That said, there's no doubt that hygienic is superior for writing modular macros-that-write-macros, etc.
in CL you'll write subtle bugs until you learn the domain. in scheme you won't write subtle bugs, but you'll struggle to formally encode what you want, even in simple cases.
I don't have this difference. I adapted quite well from CL to Gerbil Scheme, probably because it has "batteries included", mostly.
but who knows, maybe i'm just too slow, or i just miss a good intro that builds up my internal model of scheme macros... i don't know hygienic macros well enough to judge whether the problem is with me, or with some accidental complexity in the model.
syntax-rules is pretty simple to master, I think (though there are "interesting" corner cases if you go looking for them). Add my with-id and with-id/expr macros, that cover 80% of the non-hygienic cases, and now you're left with hairy macros being written with the ugly but effective syntax-case.
—♯ƒ • François-René Rideau • Chief Scientist, MuKn.com/fare “The first lesson of economics is scarcity: there is never enough of anything to fully satisfy all those who want it. The first lesson of politics is to disregard the first lesson of economics.” — Thomas Sowell