<div dir="ltr">I&#39;m not sure if this should be considered a bug or a feature request (or something else, but hopefully one of those two!) so I thought I&#39;d ask here before sending in a PR. This program:<div><br></div>
<div><div>  #lang typed/racket</div><div>  (require typed/rackunit)</div><div>  (struct: s ([a : Integer]))</div><div>  (check-equal? (s 1) (s 2))</div></div><div><br></div><div style>produces the output:</div><div style>
<div><br></div><div>check-equal?: broke its contract</div><div>  Attempted to use a higher-order value passed as `Any` in untyped code: #&lt;s&gt;</div><div>  in: the 1st argument of</div><div>      (recursive-contract</div>
<div>       (-&gt;* (Any Any) (String) any/c)</div><div>       #:impersonator)</div><div>  contract from: (interface for check-equal?)</div><div>  blaming: (interface for check-equal?)</div><div>  at: &lt;collects&gt;/typed/rackunit/main.rkt:20.2</div>
<div><br></div><div style>which is a bit confusing. (As someone who&#39;s been around Racket long enough, I guessed that sticking #:transparent into the struct declaration would be a thing to try, but newcomers seem unlikely to find that workaround.)</div>
<div style><br></div><div style>Robby</div><div style><br></div></div></div>