BSL uses special syntax information (installed by beginner:define) to only allow applications on first-order functions. For example,<div><br></div><div>(define (f a)</div><div> (a 1))</div><div><br></div><div>is an error in BSL. The way this is detected is that every top-level define (like for &#39;f&#39;) has a special notation on it that says &quot;I&#39;m a function&quot;. Since &#39;a&#39; doesn&#39;t have this, then the macro for app in BSL can throw an error.</div>
<div><br></div><div>The main thing that this macro does is give that information to the identifiers, but you need to redefine them, which causes the need for the variant mapping since type-case is looking for the original variant names.</div>
<div><br></div><div>Jay</div><div><br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Nov 5, 2012 at 6:13 AM, Prabhakar Ragde <span dir="ltr">&lt;<a href="mailto:plragde@uwaterloo.ca" target="_blank">plragde@uwaterloo.ca</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On 2012-11-05 6:43 AM, Matthew Flatt wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Here&#39;s a first cut at a module that you can import into BSL programs.<br>
<br>
The least obvious part is defining a new `define-type&#39; and `type-case&#39;<br>
that invents hidden names for the variants and them maps between them<br>
while expanding to the original forms.<br>
</blockquote>
<br></div>
Wow, thanks. I will study the code and do my best to understand it, and test it for deployment next fall. I can already see the outline of how your code achieves what you describe, but could you please say a few words about why that&#39;s necessary, to improve my understanding of BSL? Thanks again. --PR<div class="HOEnZb">
<div class="h5"><br>
____________________<br>
 Racket Users list:<br>
 <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/<u></u>users</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>Jay McCarthy &lt;<a href="mailto:jay@cs.byu.edu" target="_blank">jay@cs.byu.edu</a>&gt;<br>Assistant Professor / Brigham Young University<br><a href="http://faculty.cs.byu.edu/~jay" target="_blank">http://faculty.cs.byu.edu/~jay</a><br>
<br>&quot;The glory of God is Intelligence&quot; - D&amp;C 93<br>
</div>