<p><span class="h-card" translate="no"><a href="https://types.pl/@jeremysiek" class="u-url mention">@<span>jeremysiek</span></a></span> <span class="h-card" translate="no"><a href="https://mathstodon.xyz/@rg9119" class="u-url mention">@<span>rg9119</span></a></span> <span class="h-card" translate="no"><a href="https://types.pl/@wilbowma" class="u-url mention">@<span>wilbowma</span></a></span> <span class="h-card" translate="no"><a href="https://types.pl/@sliminality" class="u-url mention">@<span>sliminality</span></a></span> One reason that TR doesn't expose the Dyn type more directly is that because the type system is fairly complex, you would end up with more Dyn than you expect basically, since there isn't enough static information to typecheck things more. Another is that Racket's contract system is already strongly oriented around module boundaries, and TR follows that.</p>