&gt; Hi All,<br>
&gt;<br>
&gt; I am investigating typed racket. I was wondering if someone could help with<br>
&gt; answering the questions below.<br>
&gt;<br>
&gt; 1) Can we mix/import modules written in untyped racket to a module that is<br>
&gt; used typed racket. I have experimented with a few modules using and they<br>
&gt; seem to work in general but not really sure about the mechanism that makes<br>
&gt; it work. How does racket make the untyped code and typed code work together<br>
&gt; if they do? Is this in a case by case basis, ie. module/library by library<br>
&gt; basis?<br>
<br>
</div>Yes, you can mix typed modules and untyped modules in the same<br>
program. This is one of the most fundamental features of Typed<br>
Racket. To use a typed module from an untyped module, just require it<br>
-- contracts are inserted automatically to check the operation. To<br>
use an untyped module from a typed module, use `require/typed&#39; to<br>
specify the type.<br>
<div class="im"><br>
&gt; 2) What is the canonical racket paradigm? use typed racket or untyped<br>
&gt; racket? Or is this more an issue of a preference/style?<br>
<br>
</div>This is very much an issue of style. I think there are a number of<br>
advantages of type systems for maintenance, optimization,<br>
documentation, and organization, so I encourage you to use Typed<br>
Racket. However, if you use plain Racket, Typed Racket is designed to<br>
make it easy to switch, a module at a time, when you decide you want<br>
types.<br>
<div class="im"><br>
&gt; 3) Are typed racket programs faster than untyped ones? The documentation<br>
&gt; says so but I was wondering if there has been any benchmark or study being<br>
&gt; done on this topic.<br>
<br>
</div>Yes, Typed Racket has an optimizing compiler (by Vincent St-Amour)<br>
which uses the type information to make your program go faster. You<br>
can see some benchmark results in our papers<br>
<a href="http://www.ccs.neu.edu/racket/pubs/padl12-stff.pdf" target="_blank">http://www.ccs.neu.edu/racket/pubs/padl12-stff.pdf</a> and<br>
<a href="http://www.ccs.neu.edu/racket/pubs/pldi11-thacff.pdf" target="_blank">http://www.ccs.neu.edu/racket/pubs/pldi11-thacff.pdf</a> .<br>
<div class="im"><br>
&gt; 4) Can typed racket module be used in the context of untyped racket module?<br>
<br>
</div>Yes, you can just `require` the typed module, and it should work.<br>
<div class="im"><br>
&gt; 5) Is there a Hindlye/Milner style type inferencing algorithm for typed<br>
&gt; racket being worked on?<br>
<br>
</div>The Typed Racket type system contains a number of features that go<br>
beyond what&#39;s supported in Hindley/Milner style type systems, and so<br>
we can&#39;t use that inference system. Currently, Typed Racket uses<br>
local type inference to infer many of the types in your program, but<br>
we&#39;d like to infer more of them -- this is an ongoing area of<br>
research. However, inferring all the types in the program, the way<br>
that ML and Haskell do, is not a goal of Typed Racket -- having type<br>
annotations there makes the program self-documenting and easier to<br>
understand, improves type error messages, and supports advanced type<br>
system features.<br>
<br>
Thanks for your interest in Typed Racket, and if you have any more<br>
questions, please ask.<br>
<span class="HOEnZb"><font color="#888888">--<br>
sam th<br>
<a href="mailto:samth@ccs.neu.edu">samth@ccs.neu.edu</a><br>
</font></span></blockquote></div><br></div>