<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<title></title>
<meta name="Generator" content="Cocoa HTML Writer">
<meta name="CocoaVersion" content="1265">
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 12.0px Helvetica}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 12.0px Helvetica; min-height: 14.0px}
p.p3 {margin: 0.0px 0.0px 0.0px 12.0px; line-height: 14.0px; font: 12.0px Helvetica; color: #011892}
p.p4 {margin: 0.0px 0.0px 0.0px 12.0px; line-height: 14.0px; font: 12.0px Helvetica; color: #011892; min-height: 14.0px}
p.p5 {margin: 0.0px 0.0px 0.0px 24.0px; font: 12.0px Helvetica; color: #008e00}
p.p6 {margin: 0.0px 0.0px 0.0px 12.0px; font: 12.0px Helvetica; color: #011892; min-height: 14.0px}
p.p7 {margin: 0.0px 0.0px 0.0px 12.0px; font: 12.0px Helvetica; color: #011892}
p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000; min-height: 14.0px}
p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000}
p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 14.0px; font: 12.0px Helvetica; min-height: 14.0px}
p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 14.0px; font: 12.0px Helvetica}
p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 14.0px; font: 12.0px Helvetica; color: #011993}
span.s1 {font: 12.0px 'Apple Symbols'}
span.s2 {color: #011993}
span.s3 {color: #000000}
span.Apple-tab-span {white-space:pre}
</style>
</head>
<body>
<p class="p1">On 2013-12-04 03:23:59 +0000, bearophile said:</p>
<p class="p2"><br></p>
<p class="p3">Joshua Niehus:</p>
<p class="p4"><br></p>
<p class="p5">This would make for a good blog post/wiki article.<span class="Apple-converted-space">  </span>Does one already exist?</p>
<p class="p6"><br></p>
<p class="p7">If you have a AST macros like in Julia language, I think you can write something like:</p>
<p class="p6"><br></p>
<p class="p7">@setExpr(a <span class="s1">∪</span> (b <span class="s1">∩</span> c));</p>
<p class="p6"><br></p>
<p class="p7">The main difference is that the compiler gives you a tree in the macro to work on, instead of a string to parse and munge.</p>
<p class="p6"><br></p>
<p class="p7">Bye,</p>
<p class="p7">bearophile</p>
<p class="p8"><br></p>
<p class="p9">Can't you define</p>
<p class="p10"><br></p>
<p class="p11">template <span class="s2">setExpr</span>(string expr)</p>
<p class="p11">{</p>
<p class="p11"><span class="Apple-tab-span">    </span>PeggedStuff...</p>
<p class="p10"><br></p>
<p class="p11"><span class="Apple-tab-span">    </span>mixin(PeggedStuff());</p>
<p class="p11">}</p>
<p class="p10"><br></p>
<p class="p12"><span class="s3">setExpr!(q{</span>a <span class="s1">∪</span> (b <span class="s1">∩</span> c)});<span class="s3"> ?</span></p>
<p class="p10"><br></p>
<p class="p11">-Shammah</p>
</body>
</html>