hmmm ... I am getting some error. My repl session below. I am using &#39;db&#39; module. <br><br><div>&gt; bind-prepared-statement</div><div>. Type Checker: untyped top-level identifier lifted.474 in: bind-prepared-statement</div>
<div>&gt; </div><div><br></div>Not sure what to make of it. My impression was the typed/untyped code mix well. Am i missing something ??<div><br></div><div>Bikal </div><div><br><div class="gmail_quote">On Mon, Apr 30, 2012 at 10:54 PM, Vincent St-Amour <span dir="ltr">&lt;<a href="mailto:stamourv@ccs.neu.edu" target="_blank">stamourv@ccs.neu.edu</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">The REPL prints types automatically:<br>
<br>
Welcome to Racket v5.3.0.4.<br>
-&gt; vector-ref<br>
- : (All (a) ((Vectorof a) Integer -&gt; a))<br>
#&lt;procedure:vector-ref&gt;<br>
-&gt; (define: x : String &quot;Hello&quot;)<br>
-&gt; x<br>
- : String<br>
&quot;Hello&quot;<br>
-&gt;<br>
<br>
<br>
Is this what you had in mind?<br>
<br>
Vincent<br>
<br>
<br>
<br>
At Mon, 30 Apr 2012 22:23:01 +0100,<br>
Bikal Gurung wrote:<br>
&gt;<br>
&gt; [1  &lt;multipart/alternative (7bit)&gt;]<br>
&gt; [1.1  &lt;text/plain; ISO-8859-1 (7bit)&gt;]<br>
<div><div class="h5">&gt; Sam,<br>
&gt;<br>
&gt; Is there a function in racket which will - given a name - display the<br>
&gt; function/variable signature in the REPL?<br>
&gt;<br>
&gt; I am thinking about haskell prelude(REPL) that gives me the type signature<br>
&gt; when I enter :t &lt;func name&gt; in the repl?<br>
&gt;<br>
&gt; With Thanks<br>
&gt; Bikal<br>
&gt;<br>
&gt; On Mon, Apr 30, 2012 at 1:48 PM, Sam Tobin-Hochstadt &lt;<a href="mailto:samth@ccs.neu.edu">samth@ccs.neu.edu</a>&gt;wrote:<br>
&gt;<br>
&gt; &gt; On Mon, Apr 30, 2012 at 12:51 AM, Bikal Gurung &lt;<a href="mailto:gbikal@gmail.com">gbikal@gmail.com</a>&gt; wrote:<br>
&gt; &gt; &gt; Hi All,<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; I am investigating typed racket. I was wondering if someone could help<br>
&gt; &gt; with<br>
&gt; &gt; &gt; answering the questions below.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; 1) Can we mix/import modules written in untyped racket to a module that<br>
&gt; &gt; is<br>
&gt; &gt; &gt; used typed racket. I have experimented with a few modules using and they<br>
&gt; &gt; &gt; seem to work in general but not really sure about the mechanism that<br>
&gt; &gt; makes<br>
&gt; &gt; &gt; it work. How does racket make the untyped code and typed code work<br>
&gt; &gt; together<br>
&gt; &gt; &gt; if they do? Is this in a case by case basis, ie. module/library by<br>
&gt; &gt; library<br>
&gt; &gt; &gt; basis?<br>
&gt; &gt;<br>
&gt; &gt; Yes, you can mix typed modules and untyped modules in the same<br>
&gt; &gt; program.  This is one of the most fundamental features of Typed<br>
&gt; &gt; Racket.  To use a typed module from an untyped module, just require it<br>
&gt; &gt; -- contracts are inserted automatically to check the operation.  To<br>
&gt; &gt; use an untyped module from a typed module, use `require/typed&#39; to<br>
&gt; &gt; specify the type.<br>
&gt; &gt;<br>
&gt; &gt; &gt; 2) What is the canonical racket paradigm? use typed racket or untyped<br>
&gt; &gt; &gt; racket? Or is this more an issue of a preference/style?<br>
&gt; &gt;<br>
&gt; &gt; This is very much an issue of style.  I think there are a number of<br>
&gt; &gt; advantages of type systems for maintenance, optimization,<br>
&gt; &gt; documentation, and organization, so I encourage you to use Typed<br>
&gt; &gt; Racket.  However, if you use plain Racket, Typed Racket is designed to<br>
&gt; &gt; make it easy to switch, a module at a time, when you decide you want<br>
&gt; &gt; types.<br>
&gt; &gt;<br>
&gt; &gt; &gt; 3) Are typed racket programs faster than untyped ones? The documentation<br>
&gt; &gt; &gt; says so but I was wondering if there has been any benchmark or study<br>
&gt; &gt; being<br>
&gt; &gt; &gt; done on this topic.<br>
&gt; &gt;<br>
&gt; &gt; Yes, Typed Racket has an optimizing compiler (by Vincent St-Amour)<br>
&gt; &gt; which uses the type information to make your program go faster.  You<br>
&gt; &gt; can see some benchmark results in our papers<br>
&gt; &gt; <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>
&gt; &gt; <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>
&gt; &gt;<br>
&gt; &gt; &gt; 4) Can typed racket module be used in the context of untyped racket<br>
&gt; &gt; module?<br>
&gt; &gt;<br>
&gt; &gt; Yes, you can just `require` the typed module, and it should work.<br>
&gt; &gt;<br>
&gt; &gt; &gt; 5) Is there a Hindlye/Milner style type inferencing algorithm for typed<br>
&gt; &gt; &gt; racket being worked on?<br>
&gt; &gt;<br>
&gt; &gt; The Typed Racket type system contains a number of features that go<br>
&gt; &gt; beyond what&#39;s supported in Hindley/Milner style type systems, and so<br>
&gt; &gt; we can&#39;t use that inference system.  Currently, Typed Racket uses<br>
&gt; &gt; local type inference to infer many of the types in your program, but<br>
&gt; &gt; we&#39;d like to infer more of them -- this is an ongoing area of<br>
&gt; &gt; research.  However, inferring all the types in the program, the way<br>
&gt; &gt; that ML and Haskell do, is not a goal of Typed Racket -- having type<br>
&gt; &gt; annotations there makes the program self-documenting and easier to<br>
&gt; &gt; understand, improves type error messages, and supports advanced type<br>
&gt; &gt; system features.<br>
&gt; &gt;<br>
&gt; &gt; Thanks for your interest in Typed Racket, and if you have any more<br>
&gt; &gt; questions, please ask.<br>
&gt; &gt; --<br>
&gt; &gt; sam th<br>
&gt; &gt; <a href="mailto:samth@ccs.neu.edu">samth@ccs.neu.edu</a><br>
&gt; &gt;<br>
</div></div>&gt; [1.2  &lt;text/html; ISO-8859-1 (quoted-printable)&gt;]<br>
&gt;<br>
&gt; [2  &lt;text/plain; us-ascii (7bit)&gt;]<br>
<div class="HOEnZb"><div class="h5">&gt; ____________________<br>
&gt;   Racket Users list:<br>
&gt;   <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>
</div></div></blockquote></div><br></div>