<div dir="ltr">Or maybe the expansion could be tweaked? (and a test case added?)<div><br></div><div>Robby</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Jun 25, 2013 at 10:50 AM, Sam Tobin-Hochstadt <span dir="ltr">&lt;<a href="mailto:samth@ccs.neu.edu" target="_blank">samth@ccs.neu.edu</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="HOEnZb"><div class="h5">On Mon, Jun 24, 2013 at 8:21 AM, Matthias Felleisen<br>
&lt;<a href="mailto:matthias@ccs.neu.edu">matthias@ccs.neu.edu</a>&gt; wrote:<br>
&gt;<br>
&gt; On Jun 23, 2013, at 8:34 PM, Sam Tobin-Hochstadt wrote:<br>
&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; After porting nearly everything I was left with typing up the command-line<br>
&gt;&gt;&gt; parser. However, I am getting a type error at the following simplified part:<br>
&gt;&gt;<br>
&gt;&gt; Here&#39;s a version that type checks: <a href="https://gist.github.com/samth/5847063" target="_blank">https://gist.github.com/samth/5847063</a><br>
&gt;&gt;<br>
&gt;&gt; The key is giving a type annotation to `fname` using the #{} syntax.<br>
&gt;&gt; Typed Racket can figure out how to typecheck the expansion only if you<br>
&gt;&gt; give it that hint.  And the #{} syntax is for adding such hints with<br>
&gt;&gt; macros like `command-line` that didn&#39;t anticipate Typed Racket.<br>
&gt;<br>
&gt;<br>
&gt; I think this answer is not fair.<br>
&gt;<br>
&gt; Because<br>
&gt;<br>
&gt; On Jun 23, 2013, at 2:21 PM, Tim K. wrote:<br>
&gt;<br>
&gt;&gt; I wonder, why does fname have the &quot;Any&quot; type? Yes, I didn&#39;t explicitly give<br>
&gt;&gt; fname a type, but I was hoping that the typed version of &quot;command-line&quot;<br>
&gt;&gt; would do that<br>
&gt;<br>
&gt; is correct. command-line in a typed context should know that what flows into<br>
&gt; its world is a string.<br>
<br>
</div></div>This could mean one of two things.  One is that `command-line` could<br>
be treated specially in Typed Racket (or there&#39;s a<br>
`typed/racket/command-line` library), so that it&#39;s like those<br>
identifiers were already given the type `String`. This would be<br>
technically challenging (without requiring the extra library), and is,<br>
I think, a bad idea.  The other is that Typed Racket could improve its<br>
inference, so that it can just tell that only `String` is possible<br>
there.  This is my preferred solution, but it will require some<br>
significant work on improving inference in Typed Racket that I don&#39;t<br>
think will happen in the very near future.<br>
<span class="HOEnZb"><font color="#888888"><br>
Sam<br>
</font></span><div class="HOEnZb"><div class="h5">____________________<br>
  Racket Users list:<br>
  <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>
</div></div></blockquote></div><br></div>