<story><title>Gerbil – An opinionated dialect of Scheme designed for systems programming</title><url>https://github.com/vyzo/gerbil</url></story><parent_chain><item><author>kovrik</author><text>Can anyone explain why there are so many implementations of Scheme written in Scheme? 
What is the point of doing that (apart from learning purposes)?&lt;p&gt;I know, for example that people want Racket VM to be implemented in Chez Scheme because Chez is super fast. But what about all other implementations?&lt;p&gt;Also, as I&amp;#x27;m currently writing R5RS&amp;#x2F;Clojure hybrid in Kotlin, can anyone please share any _simple_ standard algorithm of implementing r5rs macro system and macro expander?&lt;p&gt;The only thing I could find is &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;www.cs.indiana.edu&amp;#x2F;chezscheme&amp;#x2F;syntax-case&amp;#x2F;&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;www.cs.indiana.edu&amp;#x2F;chezscheme&amp;#x2F;syntax-case&amp;#x2F;&lt;/a&gt;</text></item></parent_chain><comment><author>jbclements</author><text>I&amp;#x27;m afraid I literally laughed out loud at your request for a &lt;i&gt;simple&lt;/i&gt; standard algorithm for r5rs macro systems. However, it&amp;#x27;s a sympathetic laugh. Macro Hygiene is still very hard, principally because (I claim) there&amp;#x27;s not yet a clean and widely accepted model for it. Matthew Flatt&amp;#x27;s &amp;quot;sets of scopes&amp;quot; model is (IMNSHO) the current leader. Time will tell whether he or anyone else comes up with a simpler and more widely accepted model. But yes: as an implementor, it &amp;quot;feels&amp;quot; &lt;i&gt;very heavy&lt;/i&gt;, and you keep thinking that there must be a simpler solution to this problem (aside from just throwing the problem out and giving up on hygiene and language composability).</text></comment>
<story><title>Gerbil – An opinionated dialect of Scheme designed for systems programming</title><url>https://github.com/vyzo/gerbil</url></story><parent_chain><item><author>kovrik</author><text>Can anyone explain why there are so many implementations of Scheme written in Scheme? 
What is the point of doing that (apart from learning purposes)?&lt;p&gt;I know, for example that people want Racket VM to be implemented in Chez Scheme because Chez is super fast. But what about all other implementations?&lt;p&gt;Also, as I&amp;#x27;m currently writing R5RS&amp;#x2F;Clojure hybrid in Kotlin, can anyone please share any _simple_ standard algorithm of implementing r5rs macro system and macro expander?&lt;p&gt;The only thing I could find is &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;www.cs.indiana.edu&amp;#x2F;chezscheme&amp;#x2F;syntax-case&amp;#x2F;&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;www.cs.indiana.edu&amp;#x2F;chezscheme&amp;#x2F;syntax-case&amp;#x2F;&lt;/a&gt;</text></item></parent_chain><comment><author>huntie</author><text>I think it&amp;#x27;s usually to provide extra features. For example, Gerbil has a more advanced macro and module system than most Scheme implementations. It&amp;#x27;s also very easy to do because you&amp;#x27;re bascially given an AST for your new Scheme that you transform into the base Scheme.&lt;p&gt;Gerbil&amp;#x27;s docs have an example of this: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;vyzo&amp;#x2F;gerbil&amp;#x2F;blob&amp;#x2F;master&amp;#x2F;doc&amp;#x2F;tutorial&amp;#x2F;lang.md&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;vyzo&amp;#x2F;gerbil&amp;#x2F;blob&amp;#x2F;master&amp;#x2F;doc&amp;#x2F;tutorial&amp;#x2F;lang...&lt;/a&gt;</text></comment>