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