On Mon, Apr 30, 2012 at 12:51 AM, Bikal Gurung <[email protected]> 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 [email protected] ____________________ Racket Users list: http://lists.racket-lang.org/users

