Without the type annotations, you&#x27;re expected to handle dynamic type checks yourself.  With type annotations, you might think that tooling does it for you, so you might omit the dynamic checks.  But the tooling doesn&#x27;t necessarily check all your callers, and you end up with unexpected input.<p>This is partly what the Typed Racket writers mean when they say that most gradual typing systems like this one are not sound.<p><a href="http:&#x2F;&#x2F;www.cs.cornell.edu&#x2F;~fabianm&#x2F;tpls&#x2F;papers&#x2F;20151110.shtml" rel="nofollow">http:&#x2F;&#x2F;www.cs.cornell.edu&#x2F;~fabianm&#x2F;tpls&#x2F;papers&#x2F;20151110.shtm...</a><p><a href="http:&#x2F;&#x2F;www.ccs.neu.edu&#x2F;racket&#x2F;pubs&#x2F;popl16-tfgnvf.pdf" rel="nofollow">http:&#x2F;&#x2F;www.ccs.neu.edu&#x2F;racket&#x2F;pubs&#x2F;popl16-tfgnvf.pdf</a>