<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">This feels eerily familiar to a very similar bug I found just yesterday, which I’ve reported here:</div><div class=""><a href="https://github.com/racket/typed-racket/issues/56" class="">https://github.com/racket/typed-racket/issues/56</a></div><div class=""><br class=""></div><div class="">Something about this is definitely very broken. For the first function, f1, it “typechecks” even if you change the Boolean type to, for example, String, so it seems the type is just being completely ignored. I’m not sure why.</div><br class=""><div><blockquote type="cite" class=""><div class="">On Mar 21, 2015, at 19:29, Matthew Butterick <<a href="mailto:mb@mbtype.com" class="">mb@mbtype.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class="">I want to typecheck a function that looks like f1. But it doesn't work. The types of 'bool' and 'syms' are reported as Any.<br class=""><br class="">However, if I add a dummy keyword argument, as in f2, then everything typechecks fine: 'bool' is reported as a Boolean and 'syms' is (Listof Symbol).<br class=""><br class="">Feature? Bug?<br class=""><br class="">;;;;;;;;;;;;;;;;;;;;;;;<br class=""><br class="">#lang typed/racket<br class=""><br class="">(: f1 (() (Boolean) #:rest Symbol . ->* . Any))<br class="">(define (f1 [bool #t] . syms)<br class=""> bool<br class=""> syms)<br class=""><br class="">(: f2 (() (Boolean #:x Integer) #:rest Symbol . ->* . Any))<br class="">(define (f2 [bool #t] #:x [x 42] . syms)<br class=""> bool<br class=""> syms)<br class="">____________________<br class=""> Racket Users list:<br class=""> <a href="http://lists.racket-lang.org/users" class="">http://lists.racket-lang.org/users</a><br class=""></div></blockquote></div><br class=""></body></html>