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