<div dir="ltr"><div>Hi,<br><br></div>A late reply, I was a bit busy. My comments are inline<br><div><div><div><div><div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Apr 4, 2013 at 7:30 PM, Tillmann Rendel <span dir="ltr">&lt;<a href="mailto:rendel@informatik.uni-marburg.de" target="_blank">rendel@informatik.uni-marburg.de</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi,<br>
<br>
L Corbijn wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
I&#39;m happy to announce the release of my first package antiquoter, a<div><br>
combinator library for writing quasiquoters and antiquoters. The main<br>
aim is to simplify their definitions and reduce copy-and-paste programming.<br>
</div></blockquote>
<br>
Very interesting. I&#39;m using something similar to your EP class, but yours looks more refined. See class PatOrExp in <a href="https://github.com/Toxaris/pts/blob/master/src-lib/PTS/QuasiQuote.hs" target="_blank">https://github.com/Toxaris/pts/blob/master/src-lib/PTS/QuasiQuote.hs</a><br>

</blockquote><div><br></div><div>That looks interesting. Maybe I should include your version of Lift, to extend the version of template-haskell to also work on patterns.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">


<br>
I&#39;m a bit overwhelmed by the rest of your library, though. Is the overall design explained somewhere?<br>
<br></blockquote><div><br></div><div>It isn&#39;t really explained somewhere, so I should update the documentation with it. The basic idea is that you build an AntiQuoter out of separate AntiQuoterPass-es using (&lt;&lt;&gt;) or (&lt;&gt;&gt;). The resulting AntiQuoter can then be used by dataToExpQ/dataToPatQ to form the total QuasiQuote, or using the helper function mkQuasiQuoter.<br>

<br></div><div>The pattern-expression similarity is build is build on top of this abstraction, where the result of the AntiQuoter(Pass) is fixed to any instance of the EP class. Which are then used to define quite a few combinators.<br>

<br></div><div>Anyway, I&#39;ll try to update the documentation soon to make the design a bit clearer.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">


And: Your package description says that it is &quot;especially aimed at making user extensible antiquoters&quot;. That sounds very cool. Can you provide an example for how the antiquoter package supports extensions, and what kinds of extensions are supported?<span><font color="#888888"><br>


<br></font></span></blockquote><div></div><div><br>That aim should have been removed as it still is not done. But let me put it into context. The package started of as some reusable parts which I got from refactoring haskell-src-exts-qq. Its quasiquoter has three patterns to get something antiquoted each with their own special use cases. The problem was that I wanted something antiquoted which could not be done in one of those three patterns. Adding a fourth pattern has its problems, so I started antiquoter with one of the aims being to make antiquoters extensible by the user. I think I have got some ideas of how to do this, but I didn&#39;t find the time to add them.<br>
<br></div><div>Lars<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<span><font color="#888888">
  Tillmann<br>
</font></span></blockquote></div><br><br></div></div></div></div></div></div></div>