<div dir="ltr">Today I got a surprising type error that I think is worth sharing.<div><br></div><div><font face="monospace, monospace">(: my-force (All (A) (-> (-> A) A))</font></div><div><font face="monospace, monospace">(define (my-force x) (x))</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">(my-force (lambda () (values (void) (void)))</font></div><div><font face="monospace, monospace">;; ERROR! 'my-force' cannot be applied to argument.</font></div><div><font face="monospace, monospace">;; expected "(-> A)", got "(-> (values Void Void))"</font></div><div><font face="monospace, monospace">;; result type "A", expected result "AnyValues"</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">(inst my-force (Values Void Void))</font></div><div><font face="monospace, monospace">;; Parse Error in type: "Values" is unbound</font></div><div><br></div><div>That is all. I see now that Values is <a href="http://docs.racket-lang.org/ts-reference/type-ref.html?q=values#%28form._%28%28lib._typed-racket%2Fbase-env%2Fbase-types-extra..rkt%29._.Values%29%29">only allowed in result positions</a>, but I'd still expected this to work.</div><div><br></div></div>