@screwtape @svetlyak40wt @galdor @ldbeth
I think they are pretty similar actually, with the major differences imo being that #scheme implementations typically reify stack frames as continuations, allowing you to step through program execution live without necessarily needing a macrostepper, while #CommonLisp offers the SLIME/Sly experience on top of countless battle hardened tools & techniques developed over decades, with of course the downsides of a dynamic lexical environments and lack of hygiene that can lead to particularly funky debugging situations.
Most schemes have let-syntax, which I believe is like macrolet but with syntax-objects, which is another distinguishing difference. Syntax-objects are like records with an AST & source location information. It's worth noting that Robert Smith said that Common #Lisp's lack of a means to perform transformations over locations is one of the biggest obstacles to improving #coalton's user experience: https://twitter.com/stylewarning/status/1574868014855380992
But overall, scheme systems are typically very bare bones, you're often expected to roll ad-hoc debugging tools that I believe common lisp ships with. But the attraction of this is that our systems are easy to decompose and mold into whatever you need, and tools you simply can't imagine elsewhere (because of lack of first-class continuations) simply fall out the bottom once you get the hand of it. But I'll admit, moving from #racket to pure scheme was at times daunting and very challenging, whereas I could pretty much pick up racket and roll with it.