<div dir="ltr"><div class="gmail_default" style="font-family:monospace,monospace">I've been reconstructing an old programming language.</div><div class="gmail_default" style="font-family:monospace,monospace">It originally had a very simple but awkward macro</div><div class="gmail_default" style="font-family:monospace,monospace">facility:  if an identifier was declared as a macro,</div><div class="gmail_default" style="font-family:monospace,monospace">whenever it was called, it could inspect/consume as</div><div class="gmail_default" style="font-family:monospace,monospace">much of the remaining tokens as it wished and could</div><div class="gmail_default" style="font-family:monospace,monospace">splice other tokens in.  On top of this a very nice</div><div class="gmail_default" style="font-family:monospace,monospace">"declarative" macro system was built, which I loved</div><div class="gmail_default" style="font-family:monospace,monospace">when I used it.  Since my implementation is not yet</div><div class="gmail_default" style="font-family:monospace,monospace">self-hosting, I've been using higher-order functions</div><div class="gmail_default" style="font-family:monospace,monospace">instead, and the more I do this the less I want macros.</div><div class="gmail_default" style="font-family:monospace,monospace"><br></div><div class="gmail_default" style="font-family:monospace,monospace">You could think of the rewrite rules in VisualWorks</div><div class="gmail_default" style="font-family:monospace,monospace">as something resembling macros.  Come to think of it,</div><div class="gmail_default" style="font-family:monospace,monospace">Lukas Renggli, Helvetia, ... found it!</div><div class="gmail_default" style="font-family:monospace,monospace"><br></div><div class="gmail_default" style="font-family:monospace,monospace"><a href="http://scg.unibe.ch/archive/phd/renggli-phd.pdf">http://scg.unibe.ch/archive/phd/renggli-phd.pdf</a></div><div class="gmail_default" style="font-family:monospace,monospace"><br></div><div class="gmail_default" style="font-family:monospace,monospace"><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 12 June 2018 at 12:10, Michael Forster <span dir="ltr"><<a href="mailto:mike@forsterfamily.ca" target="_blank">mike@forsterfamily.ca</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Fri, May 25, 2018 at 10:12 AM, Ben Coman <<a href="mailto:btc@openinworld.com">btc@openinworld.com</a>> wrote:<br>
><br>
><br>
> On 25 May 2018 at 21:22, Debiller 777 <<a href="mailto:ozovozovozo202@gmail.com">ozovozovozo202@gmail.com</a>> wrote:<br>
>><br>
>> Well, I've already asked about adding new literals to pharo or Smalltalk<br>
>> in general, however this time I have a better idea:<br>
>> macros. Can they be added? Because if I understand correctly they may be<br>
>> the only way to do that.<br>
><br>
><br>
> Can you provide an example how how you would use a macro?<br>
><br>
> cheers -ben<br>
<br>
<br>
<br>
Late to the party, but I thought some might find it interesting to<br>
look through the "macros vs. blocks" thread on the old Lightweight<br>
Languages mailing list. Posts from Guy Steele Jr., Avi Bryant, Trevor<br>
Blackwell (rewrote Graham's Yahoo Store in Smalltalk), and others:<br>
<br>
<a href="https://people.csail.mit.edu/gregs/ll1-discuss-archive-html/msg02060.html" rel="noreferrer" target="_blank">https://people.csail.mit.edu/<wbr>gregs/ll1-discuss-archive-<wbr>html/msg02060.html</a><br>
<br>
<br>
Cheers,<br>
<br>
Mike<br>
<br>
</blockquote></div><br></div>