<p><br>
On Aug 13, 2011 2:13 PM, &quot;Eli Barzilay&quot; &lt;<a href="mailto:eli@barzilay.org">eli@barzilay.org</a>&gt; wrote:<br>
&gt;<br>
&gt; Two minutes ago, Sam Tobin-Hochstadt wrote:<br>
&gt; &gt; On Aug 13, 2011 1:35 PM, &quot;Carl Eastlund&quot; &lt;<a href="mailto:cce@ccs.neu.edu">cce@ccs.neu.edu</a>&gt; wrote:<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; On Sat, Aug 13, 2011 at 1:26 PM, Matthias Felleisen<br>
&gt; &gt; &gt; &lt;<a href="mailto:matthias@ccs.neu.edu">matthias@ccs.neu.edu</a>&gt; wrote:<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; On Aug 13, 2011, at 12:58 PM, Sam Tobin-Hochstadt wrote:<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;&gt; On Sat, Aug 13, 2011 at 12:51 PM, Eli Barzilay &lt;<a href="mailto:eli@barzilay.org">eli@barzilay.org</a>&gt;<br>
&gt; &gt; wrote:<br>
&gt; &gt; &gt; &gt;&gt;&gt; 10 minutes ago, Sam Tobin-Hochstadt wrote:<br>
&gt; &gt; &gt; &gt;&gt;&gt;&gt; `match&#39; also currently adds a syntax property to help the Typed<br>
&gt; &gt; &gt; &gt;&gt;&gt;&gt; Racket type checker understand the expansion.  Like &#39;disappeared-use<br>
&gt; &gt; &gt; &gt;&gt;&gt;&gt; for Check Syntax, this property is in theory semantically<br>
&gt; &gt; &gt; &gt;&gt;&gt;&gt; independent of Typed Racket, but only used there.<br>
&gt; &gt; &gt; &gt;&gt;&gt;<br>
&gt; &gt; &gt; &gt;&gt;&gt; No, when your property is called `typechecker:called-in-tail-position&#39;<br>
&gt; &gt; &gt; &gt;&gt;&gt; it is not independent of a &quot;typecheker&quot;.  It will be, if it gets a<br>
&gt; &gt; &gt; &gt;&gt;&gt; generic name, and gets documented which turns it from a backdoor for a<br>
&gt; &gt; &gt; &gt;&gt;&gt; backward dependency to a known API.<br>
&gt; &gt; &gt; &gt;&gt;<br>
&gt; &gt; &gt; &gt;&gt; The *semantic* independence of the property and the typechecker<br>
&gt; &gt; &gt; &gt;&gt; implementation is not determined either by the name of the property or<br>
&gt; &gt; &gt; &gt;&gt; the documentation.<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; There are two levels of semantics here:<br>
&gt; &gt; &gt; &gt;  -- operational semantics of your module, which makes you<br>
&gt; &gt; &gt; &gt;     correct<br>
&gt; &gt; &gt; &gt;  -- &#39;in spirit&#39; semantics, which makes Eli correct.<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; I will say that even though I cannot define &#39;in spirit&#39;<br>
&gt; &gt; &gt; &gt; formally, I am with Eli here.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; How about instead of &quot;in spirit&quot;, we focus on program logic.<br>
&gt; &gt; &gt; There is no semantic dependence on the typechecker -- Racket can<br>
&gt; &gt; &gt; tell what the program does without it.  However, programmers<br>
&gt; &gt; &gt; cannot read that code and know what it is for and whether it is<br>
&gt; &gt; &gt; correct without reference to the typechecker.  That&#39;s a meaningful<br>
&gt; &gt; &gt; dependency.  It makes maintaining that line of code 100% dependent<br>
&gt; &gt; &gt; on the typechecker.<br>
&gt;<br>
&gt; +1.<br>
&gt;<br>
&gt;<br>
&gt; &gt; What I mean by &quot;semantically independent&quot; I mean exactly that your<br>
&gt; &gt; statement is not correct.  The meaning of the property is defined<br>
&gt; &gt; without reference to the type checker.<br>
&gt;<br>
&gt; To rephrase what Carl said: what if you change the TR &quot;type chekcer&quot;<br>
&gt; to a &quot;type verifier&quot;?  You&#39;d change the property name, which means<br>
&gt; that a TR change has lead to a change in match.  That&#39;s the actual<br>
&gt; dependency.<br>
&gt;<br>
&gt;<br>
&gt; &gt; It means &quot;this let-bound function is probably called in tail<br>
&gt; &gt; position wrt the let.&quot;. This says nothing about types, and can be<br>
&gt; &gt; reasoned about independently.<br>
&gt;<br>
&gt; Exactly -- having &quot;typechecker:&quot; in the name is bogus.  Would you mind<br>
&gt; changing it to `swindle:called-in-tail-position&#39;?</p>
<p>Is this just an argument about how to name these syntax properties?  If so, I&#39;m happy with whatever you think I should name it.  That doesn&#39;t seem to get us anywhere on the other questions, though.</p>
<p>Sam</p>