> No doubt others will point this out, but Scheme pre-dated CL by
> nearly a decade. Much like in discussions of apes and humans, the
> correct way of putting it is that they had common ancestors.


yeah, but WITH-EXCEPTION-HANDLER is defined in R6RS, which is dated 2007.

and it was defined so that when the current handler is invoked, then it remains 
the current handler; i.e. any error in the handler leads to a recursive 
invocation of the same handler.

R7RS seems to have fixed it. there are some more details here:

https://practical-scheme.net/gauche/man/gauche-refe/Exceptions.html#index-with_002dexception_002dhandler

it's just icing on the cake that in Guile w-e-h has a #:unwind? keyword arg 
(i.e. at the end of the sexp) that completely changes the flow of control 
(returning from the handler either returns to RAISE or to w-e-h).

compared to this the condition system in CL feels much cleaner and much better 
thought out. and it predates R6RS by decades of real-world experience.


> I've never attempted any substantial development in Scheme, but have
> wondered whether I were missing anything, so Attila's observation is
> of interest.


another misconception i had was that there's a similar level of portability 
between various scheme implementations as between CLs, but it's not even 
comparable.

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.


> Your criticisms of Scheme are certainly valid. I don’t think that
> WITH-EXCEPTION-HANDLER even exists in SRFI 7 or whatever it was
> called.


yeah, the other thing is that there are like 3 different groups of primitives 
for exception handling, defined by various SRFIs, RxRS, or some 
implementation-specific solutions. they often coexist in the same 
implementation, and have a confusing web of interactions in some corner cases 
like i mentioned above. it's often hard to even know which set of primitives 
are obsolete, and which is the preferred one.


> And I, personally, think the biggest lacking in Scheme is the macro
> system. Oh I know all about the raging arguments about hygienic
> macrology.


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.

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.

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.

-- 
• attila lendvai
• PGP: 963F 5D5F 45C7 DFCD 0A39
--
“If he controls your ideas he will soon control your actions, because every 
action is preceded by an idea.”
        — Silvano Arieti (1914–1981), 'The Will to Be Human'

Reply via email to