<story><title>Perl 6&apos;s given: switch on steroids</title><url>https://tenesianu.blogspot.com/2019/05/perl-6s-given-switch-on-steroids.html</url></story><parent_chain><item><author>cracauer</author><text>Of course if you&amp;#x27;d use Lisp in the first place you could make a new syntax to input those things in the visually safest manner without waiting for a language revision.&lt;p&gt;Compile-time computing is precisely about this, e.g. 
&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;medium.com&amp;#x2F;@MartinCracauer&amp;#x2F;a-gentle-introduction-to-compile-time-computing-part-3-scientific-units-8e41d8a727ca&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;medium.com&amp;#x2F;@MartinCracauer&amp;#x2F;a-gentle-introduction-to-...&lt;/a&gt;</text></item></parent_chain><comment><author>dan-robertson</author><text>Perl 6 includes the ability to modify the grammar and parser on the fly in a way which is much more convenient than reader macros in Common Lisp (and different to macros in CL). Saying “new syntax” is also slightly disingenuous because the only convenient new syntax available is made of parens.&lt;p&gt;That said, this isn’t really an article about syntax but how several language features fit together.&lt;p&gt;Making something slightly similar in CL could be something like:&lt;p&gt;&lt;pre&gt;&lt;code&gt;  (defmacro with (it &amp;amp;body body)
    `(let ((it ,it)) (block nil ,@body)))
  (defmacro having (condition &amp;amp;body body)
    `(if (smart-match ,condition it)
         (return-from nil (progn ,@body))
         (values)))
  (defgeneric smart-match (matcher thing))
  ...
&lt;/code&gt;&lt;/pre&gt;
But this makes the behaviour of `having` a bit weird.&lt;p&gt;I feel like this article is much more about how certain perl6 features compose nicely together (in particular smart matching, $_, expressions returning values) in a way that the existing features of given and when compose to give a useful switch mechanism for free.</text></comment>
<story><title>Perl 6&apos;s given: switch on steroids</title><url>https://tenesianu.blogspot.com/2019/05/perl-6s-given-switch-on-steroids.html</url></story><parent_chain><item><author>cracauer</author><text>Of course if you&amp;#x27;d use Lisp in the first place you could make a new syntax to input those things in the visually safest manner without waiting for a language revision.&lt;p&gt;Compile-time computing is precisely about this, e.g. 
&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;medium.com&amp;#x2F;@MartinCracauer&amp;#x2F;a-gentle-introduction-to-compile-time-computing-part-3-scientific-units-8e41d8a727ca&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;medium.com&amp;#x2F;@MartinCracauer&amp;#x2F;a-gentle-introduction-to-...&lt;/a&gt;</text></item></parent_chain><comment><author>sametmax</author><text>And of course, your code base will end up riddled with those untested, undocumented customizations. People getting into it will hate you for it, and you will look at them with a smug face, stating how they don&amp;#x27;t get the power of a true language.&lt;p&gt;There is a reason Lisp based languages are not more popular: most people don&amp;#x27;t want to learn a new language every time they work on a new project.</text></comment>