blake shaw 🇵🇸<p><span class="h-card"><a href="https://mastodon.sdf.org/@screwtape" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>screwtape</span></a></span> <span class="h-card"><a href="https://fosstodon.org/@svetlyak40wt" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>svetlyak40wt</span></a></span> <span class="h-card"><a href="https://emacs.ch/@galdor" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>galdor</span></a></span> <span class="h-card"><a href="https://mastodon.sdf.org/@ldbeth" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>ldbeth</span></a></span></p><p>I think they are pretty similar actually, with the major differences imo being that <a href="https://functional.cafe/tags/scheme" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>scheme</span></a> implementations typically reify stack frames as continuations, allowing you to step through program execution live without necessarily needing a macrostepper, while <a href="https://functional.cafe/tags/CommonLisp" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>CommonLisp</span></a> 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.</p><p>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 <a href="https://functional.cafe/tags/Lisp" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Lisp</span></a>'s lack of a means to perform transformations over locations is one of the biggest obstacles to improving <a href="https://functional.cafe/tags/coalton" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>coalton</span></a>'s user experience: <a href="https://twitter.com/stylewarning/status/1574868014855380992" rel="nofollow noopener noreferrer" target="_blank"><span class="invisible">https://</span><span class="ellipsis">twitter.com/stylewarning/statu</span><span class="invisible">s/1574868014855380992</span></a></p><p>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 <a href="https://functional.cafe/tags/racket" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>racket</span></a> to pure scheme was at times daunting and very challenging, whereas I could pretty much pick up racket and roll with it.</p>