<div dir="ltr"><div>Asumu found a solution that works reasonably well:<br><br>(define-splicing-syntax-class (maybe-clause expected-clause-name default-value)<br>  #:attributes (ast)<br>  (pattern (clause-name elements ...)<br>

           #:when (eq? (syntax-e #'clause-name) (syntax-e expected-clause-name))<br>           #:attr ast #'(clause-name elements ...))<br>  (pattern (~seq) #:attr ast default-value))<br><br></div>Explicitly doing the comparison instead of allowing syntax-parse to do it for me isn't ideal, but since this is isolated to one bit of code, it's fine. I think what I'd really like requires some sort of reflection on syntax patterns, which may be available, but I'm not going to spend time to look into it right now.<br>

</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Feb 17, 2014 at 4:24 PM, Jonathan Schuster <span dir="ltr"><<a href="mailto:schuster@ccs.neu.edu" target="_blank">schuster@ccs.neu.edu</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div><div><div><div>Is there a way to abstract datum literals out of a (splicing) syntax class? I have a number of patterns that look something like this:<br>

<br></div>(~optional (clause-name: element ...))<br>
<br></div>and I'd like to factor that out into a common syntax class, but be able to specialize it according to the specific clause name I'm expecting. For example, instead of something like this:<br><br></div>(~optional (my-clause: element ...))<br>


<br></div>I would have a syntax class called "maybe-clause" and just write<br><br></div>(~var clause (maybe-clause my-clause:))<br><br></div>Is this possible?<br><br></div>P.S. I know that I should be using literals instead of datum literals, but that's a refactoring that needs to happen to this code later on. In any case, I assume one has the same problems with literals, too.<br>


</div>
</blockquote></div><br></div>