<div>The following gives an error of &quot;Expected Nothing, but got D in elem.&quot;   Type checking error?</div><div><br></div><div>#lang typed/racket/base</div><div><br></div><div>(struct: (D C) Collection ([append   : (D -&gt; Void)]</div>
<div>                           [build    : (-&gt; C)]))</div><div><br></div><div>(: List-Builder (All (D) -&gt; (Collection D (Listof D))))</div><div>(define (List-Builder)</div><div>  </div><div>  (: lst (Listof D))</div>
<div>  (define lst &#39;())</div><div>  </div><div>  (Collection (ë: ((datum : D))</div><div>                (set! lst (cons datum lst)))</div><div>              (ë () lst)))</div><div>                </div><div>(: build-Collection (All (D C) (Collection D C)-&gt; C))</div>
<div>(define (build-Collection collection)</div><div>  ((Collection-build collection)))</div><div><br></div><div>(: append-Collection (All (D C) (Collection D C) D -&gt; Void))</div><div>(define (append-Collection coll elem)</div>
<div>  ((Collection-append coll) elem))</div><div><br></div>