<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div>Um, for this:</div><div><table cellspacing="0" cellpadding="0" class="RktBlk" style="margin: 0px; padding: 0px; font-family: 'Source Code Pro', monospace; white-space: pre; font-size: 15px; color: rgb(0, 0, 0); line-height: 22px; background-color: rgb(255, 255, 255);"><tbody style="margin: 0px; padding: 0px;"><tr style="margin: 0px; padding: 0px; white-space: inherit;"><td style="margin: 0px; padding: 0px; vertical-align: baseline; white-space: inherit;"><span class="RktPn" style="margin: 0px; padding: 0px; white-space: inherit; color: rgb(132, 60, 36); font-size: 1rem;">(</span><span class="RktSym" style="margin: 0px; padding: 0px; white-space: inherit; color: inherit; font-size: 1rem;"><a href="http://docs.racket-lang.org/reference/module.html#%28form._%28%28quote._~23~25kernel%29._module%29%29" class="RktStxLink" data-pltdoc="x" style="margin: 0px; padding: 0px; text-decoration: none; color: rgb(0, 119, 170); font-size: 1rem;">module</a></span><span class="hspace" style="margin: 0px; padding: 0px; white-space: inherit; font-size: 1rem;"> </span><span class="RktSym" style="margin: 0px; padding: 0px; white-space: inherit; color: inherit; font-size: 1rem;">typed</span><span class="hspace" style="margin: 0px; padding: 0px; white-space: inherit; font-size: 1rem;"> </span><span class="RktSym" style="margin: 0px; padding: 0px; white-space: inherit; color: inherit; font-size: 1rem;">typed/racket/base</span></td></tr><tr style="margin: 0px; padding: 0px; white-space: inherit;"><td style="margin: 0px; padding: 0px; vertical-align: baseline; white-space: inherit;"><span class="hspace" style="margin: 0px; padding: 0px; white-space: inherit; font-size: 1rem;"> </span><span class="hspace" style="margin: 0px; padding: 0px; white-space: inherit; font-size: 1rem;"> </span><span class="RktPn" style="margin: 0px; padding: 0px; white-space: inherit; color: rgb(132, 60, 36); font-size: 1rem;">(</span><span class="RktSym" style="margin: 0px; padding: 0px; white-space: inherit; color: inherit; font-size: 1rem;"><a href="http://docs.racket-lang.org/reference/require.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" class="RktStxLink" data-pltdoc="x" style="margin: 0px; padding: 0px; text-decoration: none; color: rgb(0, 119, 170); font-size: 1rem;">provide</a></span><span class="hspace" style="margin: 0px; padding: 0px; white-space: inherit; font-size: 1rem;"> </span><span class="RktPn" style="margin: 0px; padding: 0px; white-space: inherit; color: rgb(132, 60, 36); font-size: 1rem;">(</span><span class="RktSym" style="margin: 0px; padding: 0px; white-space: inherit; color: inherit; font-size: 1rem;"><a href="http://docs.racket-lang.org/reference/require.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._struct-out%29%29" class="RktStxLink" data-pltdoc="x" style="margin: 0px; padding: 0px; text-decoration: none; color: rgb(0, 119, 170); font-size: 1rem;">struct-out</a></span><span class="hspace" style="margin: 0px; padding: 0px; white-space: inherit; font-size: 1rem;"> </span><span class="RktSym" style="margin: 0px; padding: 0px; white-space: inherit; color: inherit; font-size: 1rem;">Foo</span><span class="RktPn" style="margin: 0px; padding: 0px; white-space: inherit; color: rgb(132, 60, 36); font-size: 1rem;">)</span><span class="RktPn" style="margin: 0px; padding: 0px; white-space: inherit; color: rgb(132, 60, 36); font-size: 1rem;">)</span></td></tr><tr style="margin: 0px; padding: 0px; white-space: inherit;"><td style="margin: 0px; padding: 0px; vertical-align: baseline; white-space: inherit;"><span class="hspace" style="margin: 0px; padding: 0px; white-space: inherit; font-size: 1rem;"> </span><span class="hspace" style="margin: 0px; padding: 0px; white-space: inherit; font-size: 1rem;"> </span><span class="RktPn" style="margin: 0px; padding: 0px; white-space: inherit; color: rgb(132, 60, 36); font-size: 1rem;">(</span><span class="RktSym" style="margin: 0px; padding: 0px; white-space: inherit; color: inherit; font-size: 1rem;"><a href="http://docs.racket-lang.org/ts-reference/special-forms.html#%28form._%28%28lib._typed-racket%2Fbase-env%2Fprims..rkt%29._struct%29%29" class="RktStxLink" data-pltdoc="x" style="margin: 0px; padding: 0px; text-decoration: none; color: rgb(0, 119, 170); font-size: 1rem;">struct</a></span><span class="hspace" style="margin: 0px; padding: 0px; white-space: inherit; font-size: 1rem;"> </span><span class="RktPn" style="margin: 0px; padding: 0px; white-space: inherit; color: rgb(132, 60, 36); font-size: 1rem;">[</span><span class="RktSym" style="margin: 0px; padding: 0px; white-space: inherit; color: inherit; font-size: 1rem;">A</span><span class="RktPn" style="margin: 0px; padding: 0px; white-space: inherit; color: rgb(132, 60, 36); font-size: 1rem;">]</span><span class="hspace" style="margin: 0px; padding: 0px; white-space: inherit; font-size: 1rem;"> </span><span class="RktSym" style="margin: 0px; padding: 0px; white-space: inherit; color: inherit; font-size: 1rem;">Foo</span><span class="hspace" style="margin: 0px; padding: 0px; white-space: inherit; font-size: 1rem;"> </span><span class="RktPn" style="margin: 0px; padding: 0px; white-space: inherit; color: rgb(132, 60, 36); font-size: 1rem;">(</span><span class="RktPn" style="margin: 0px; padding: 0px; white-space: inherit; color: rgb(132, 60, 36); font-size: 1rem;">[</span><span class="RktSym" style="margin: 0px; padding: 0px; white-space: inherit; color: inherit; font-size: 1rem;">x</span><span class="hspace" style="margin: 0px; padding: 0px; white-space: inherit; font-size: 1rem;"> </span><span class="RktSym" style="margin: 0px; padding: 0px; white-space: inherit; color: inherit; font-size: 1rem;"><a href="http://docs.racket-lang.org/ts-reference/special-forms.html#%28form._%28%28lib._typed-racket%2Fbase-env%2Fprims..rkt%29._~3a%29%29" class="RktStxLink" data-pltdoc="x" style="margin: 0px; padding: 0px; text-decoration: none; color: rgb(0, 119, 170); font-size: 1rem;">:</a></span><span class="hspace" style="margin: 0px; padding: 0px; white-space: inherit; font-size: 1rem;"> </span><span class="RktSym" style="margin: 0px; padding: 0px; white-space: inherit; color: inherit; font-size: 1rem;">A</span><span class="RktPn" style="margin: 0px; padding: 0px; white-space: inherit; color: rgb(132, 60, 36); font-size: 1rem;">]</span><span class="hspace" style="margin: 0px; padding: 0px; white-space: inherit; font-size: 1rem;"> </span><span class="RktPn" style="margin: 0px; padding: 0px; white-space: inherit; color: rgb(132, 60, 36); font-size: 1rem;">[</span><span class="RktSym" style="margin: 0px; padding: 0px; white-space: inherit; color: inherit; font-size: 1rem;">y</span><span class="hspace" style="margin: 0px; padding: 0px; white-space: inherit; font-size: 1rem;"> </span><span class="RktSym" style="margin: 0px; padding: 0px; white-space: inherit; color: inherit; font-size: 1rem;"><a href="http://docs.racket-lang.org/ts-reference/special-forms.html#%28form._%28%28lib._typed-racket%2Fbase-env%2Fprims..rkt%29._~3a%29%29" class="RktStxLink" data-pltdoc="x" style="margin: 0px; padding: 0px; text-decoration: none; color: rgb(0, 119, 170); font-size: 1rem;">:</a></span><span class="hspace" style="margin: 0px; padding: 0px; white-space: inherit; font-size: 1rem;"> </span><span class="RktSym" style="margin: 0px; padding: 0px; white-space: inherit; color: inherit; font-size: 1rem;">A</span><span class="RktPn" style="margin: 0px; padding: 0px; white-space: inherit; color: rgb(132, 60, 36); font-size: 1rem;">]</span><span class="RktPn" style="margin: 0px; padding: 0px; white-space: inherit; color: rgb(132, 60, 36); font-size: 1rem;">)</span><span class="hspace" style="margin: 0px; padding: 0px; white-space: inherit; font-size: 1rem;"> </span><span class="RktPn" style="margin: 0px; padding: 0px; white-space: inherit; color: rgb(132, 60, 36); font-size: 1rem;">#:transparent</span><span class="RktPn" style="margin: 0px; padding: 0px; white-space: inherit; color: rgb(132, 60, 36); font-size: 1rem;">)</span><span class="RktPn" style="margin: 0px; padding: 0px; white-space: inherit; color: rgb(132, 60, 36); font-size: 1rem;">)</span></td></tr></tbody></table><div><br></div></div><div><span class="RktPn" style="margin: 0px; padding: 0px; font-family: 'Source Code Pro', monospace; white-space: pre; color: rgb(132, 60, 36); font-size: 15px; line-height: 22px; background-color: rgb(255, 255, 255);">(</span><span class="RktSym" style="margin: 0px; padding: 0px; font-family: 'Source Code Pro', monospace; white-space: pre; font-size: 15px; line-height: 22px; background-color: rgb(255, 255, 255);">Foo</span><span class="hspace" style="margin: 0px; padding: 0px; font-family: 'Source Code Pro', monospace; white-space: pre; font-size: 15px; line-height: 22px; background-color: rgb(255, 255, 255);"> </span><span class="RktVal" style="margin: 0px; padding: 0px; font-family: 'Source Code Pro', monospace; white-space: pre; color: rgb(34, 139, 34); font-size: 15px; line-height: 22px; background-color: rgb(255, 255, 255);">"a"</span><span class="hspace" style="margin: 0px; padding: 0px; font-family: 'Source Code Pro', monospace; white-space: pre; font-size: 15px; line-height: 22px; background-color: rgb(255, 255, 255);"> </span><span class="RktVal" style="margin: 0px; padding: 0px; font-family: 'Source Code Pro', monospace; white-space: pre; color: rgb(34, 139, 34); font-size: 15px; line-height: 22px; background-color: rgb(255, 255, 255);">'</span><span class="RktVal" style="margin: 0px; padding: 0px; font-family: 'Source Code Pro', monospace; white-space: pre; color: rgb(34, 139, 34); font-size: 15px; line-height: 22px; background-color: rgb(255, 255, 255);">b</span><span class="RktPn" style="margin: 0px; padding: 0px; font-family: 'Source Code Pro', monospace; white-space: pre; color: rgb(132, 60, 36); font-size: 15px; line-height: 22px; background-color: rgb(255, 255, 255);">)</span></div><div>Should be fine because Foo could be instantiated at the type (U String Symbol).</div><br><div><div>On Jan 29, 2015, at 9:25 PM, Alexis King <<a href="mailto:lexi.lambda@gmail.com">lexi.lambda@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><meta http-equiv="Content-Type" content="text/html charset=utf-8"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">I recently ran into a problem in which opaque types (types imported from untyped code) cannot by parameterized by Typed Racket. I initially encountered this problem in <a href="https://github.com/lexi-lambda/racket-2htdp-typed/issues/1" class="">my attempt to port 2htdp/image to TR</a>.<div class=""><br class=""></div><div class="">After some further consideration, I’m interested in adding support to make something like this possible, which would certainly have additional benefits beyond this specific use-case. I’ve outlined my proposal here:</div><div class=""><a href="http://lexi-lambda.github.io/racket-parametric-opaque-types/" class="">http://lexi-lambda.github.io/racket-parametric-opaque-types/</a></div><div class=""><br class=""></div><div class="">Any feedback, suggestions, or advice would be appreciated, especially from those who are familiar with Typed Racket’s internals.</div><div class=""><br class=""></div><div class="">Thank you,</div><div class="">Alexis</div></div>_________________________<br> Racket Developers list:<br> <a href="http://lists.racket-lang.org/dev">http://lists.racket-lang.org/dev</a><br></blockquote></div><br></body></html>