[racket] typed racked questions

From: Vincent St-Amour (stamourv at ccs.neu.edu)
Date: Mon Apr 30 17:54:40 EDT 2012

The REPL prints types automatically:

Welcome to Racket v5.3.0.4.
-> vector-ref
- : (All (a) ((Vectorof a) Integer -> a))
#<procedure:vector-ref>
-> (define: x : String "Hello")
-> x
- : String
"Hello"
-> 


Is this what you had in mind?

Vincent



At Mon, 30 Apr 2012 22:23:01 +0100,
Bikal Gurung wrote:
> 
> [1  <multipart/alternative (7bit)>]
> [1.1  <text/plain; ISO-8859-1 (7bit)>]
> Sam,
> 
> Is there a function in racket which will - given a name - display the
> function/variable signature in the REPL?
> 
> I am thinking about haskell prelude(REPL) that gives me the type signature
> when I enter :t <func name> in the repl?
> 
> With Thanks
> Bikal
> 
> On Mon, Apr 30, 2012 at 1:48 PM, Sam Tobin-Hochstadt <samth at ccs.neu.edu>wrote:
> 
> > On Mon, Apr 30, 2012 at 12:51 AM, Bikal Gurung <gbikal at gmail.com> wrote:
> > > Hi All,
> > >
> > > I am investigating typed racket. I was wondering if someone could help
> > with
> > > answering the questions below.
> > >
> > > 1) Can we mix/import modules written in untyped racket to a module that
> > is
> > > used typed racket. I have experimented with a few modules using and they
> > > seem to work in general but not really sure about the mechanism that
> > makes
> > > it work. How does racket make the untyped code and typed code work
> > together
> > > if they do? Is this in a case by case basis, ie. module/library by
> > library
> > > basis?
> >
> > Yes, you can mix typed modules and untyped modules in the same
> > program.  This is one of the most fundamental features of Typed
> > Racket.  To use a typed module from an untyped module, just require it
> > -- contracts are inserted automatically to check the operation.  To
> > use an untyped module from a typed module, use `require/typed' to
> > specify the type.
> >
> > > 2) What is the canonical racket paradigm? use typed racket or untyped
> > > racket? Or is this more an issue of a preference/style?
> >
> > This is very much an issue of style.  I think there are a number of
> > advantages of type systems for maintenance, optimization,
> > documentation, and organization, so I encourage you to use Typed
> > Racket.  However, if you use plain Racket, Typed Racket is designed to
> > make it easy to switch, a module at a time, when you decide you want
> > types.
> >
> > > 3) Are typed racket programs faster than untyped ones? The documentation
> > > says so but I was wondering if there has been any benchmark or study
> > being
> > > done on this topic.
> >
> > Yes, Typed Racket has an optimizing compiler (by Vincent St-Amour)
> > which uses the type information to make your program go faster.  You
> > can see some benchmark results in our papers
> > http://www.ccs.neu.edu/racket/pubs/padl12-stff.pdf and
> > http://www.ccs.neu.edu/racket/pubs/pldi11-thacff.pdf .
> >
> > > 4) Can typed racket module be used in the context of untyped racket
> > module?
> >
> > Yes, you can just `require` the typed module, and it should work.
> >
> > > 5) Is there a Hindlye/Milner style type inferencing algorithm for typed
> > > racket being worked on?
> >
> > The Typed Racket type system contains a number of features that go
> > beyond what's supported in Hindley/Milner style type systems, and so
> > we can't use that inference system.  Currently, Typed Racket uses
> > local type inference to infer many of the types in your program, but
> > we'd like to infer more of them -- this is an ongoing area of
> > research.  However, inferring all the types in the program, the way
> > that ML and Haskell do, is not a goal of Typed Racket -- having type
> > annotations there makes the program self-documenting and easier to
> > understand, improves type error messages, and supports advanced type
> > system features.
> >
> > Thanks for your interest in Typed Racket, and if you have any more
> > questions, please ask.
> > --
> > sam th
> > samth at ccs.neu.edu
> >
> [1.2  <text/html; ISO-8859-1 (quoted-printable)>]
> 
> [2  <text/plain; us-ascii (7bit)>]
> ____________________
>   Racket Users list:
>   http://lists.racket-lang.org/users

Posted on the users mailing list.