Now my example typechecks, but effectively I can&#39;t do anything with the function :-( so it is very unpractical<br><br>(: f ((Nothing -&gt; Any) -&gt; True))<br>(define (f g) #t)<br>(f (lambda: ([x : Integer]) #t))<br><br>
is there any way to make the typechecker happy, but being able to apply functions?<br><br>For me, it would be something like:<br><br>(: f ((Bottom -&gt; True) -&gt; True))<br>(define (f g) (g 1))<br>(f (lambda: ([x : Integer]) #t)) <br>
<br>?? or any other workaround?<br>should I instead use an untyped module?<br><br>Thanks<br><br><br><div class="gmail_quote">2011/11/28 Sam Tobin-Hochstadt <span dir="ltr">&lt;<a href="mailto:samth@ccs.neu.edu">samth@ccs.neu.edu</a>&gt;</span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div></div><div class="h5">On Mon, Nov 28, 2011 at 10:35 AM, Ismael Figueroa Palet<br>
&lt;<a href="mailto:ifigueroap@gmail.com">ifigueroap@gmail.com</a>&gt; wrote:<br>
&gt; As Any is supertype of all values, what is the equivalent type for function<br>
&gt; types?<br>
&gt;<br>
&gt; (Any -&gt; Any) does not work because of the contra-variant requirement of the<br>
&gt; argument.<br>
&gt;<br>
&gt; (: f ((Any -&gt; Any) -&gt; True))<br>
&gt; (define (f g) #t)<br>
&gt;<br>
&gt; (f (lambda (x) x) #t) ;; works<br>
&gt; (f (lambda: ([x : Integer]) #f)) ;; does not work<br>
&gt;<br>
&gt; The error is:<br>
&gt;<br>
&gt; Type Checker: Expected (Any -&gt; Any), but got (Integer -&gt; Any) in: (lambda:<br>
&gt; ((x : Integer)) #f)<br>
&gt;<br>
&gt; If I understand it correctly, the type I&#39;m looking for is (Bottom -&gt; Any),<br>
&gt; which satisfies the contra-variant and variant requirements for function<br>
&gt; subtyping. However, the Bottom type doesn&#39;t seem to exist (at least at the<br>
&gt; user-level, because I remember seeing some error messages that mentioned Top<br>
&gt; and Bottom).<br>
<br>
</div></div>You&#39;re probably looking for the type `Nothing&#39;.  Note that functions<br>
of type `(Nothing -&gt; T)&#39; are very hard to apply, though.<br>
<font color="#888888"><br>
--<br>
sam th<br>
<a href="mailto:samth@ccs.neu.edu">samth@ccs.neu.edu</a><br>
</font></blockquote></div><br><br clear="all"><br>-- <br>Ismael<br><br>