Lambda the Ultimate

inactiveTopic A Type Notation for Scheme
started 9/25/2002; 2:40:00 AM - last post 10/3/2002; 3:58:40 AM
jon fernquest - A Type Notation for Scheme  blueArrow
9/25/2002; 2:40:00 AM (reads: 2002, responses: 5)
A Type Notation for Scheme

A lightweight type notation and type checker for Scheme. The type annotations can be added to already existing code in a file separate from the Scheme source code. These types "can also be thought of as abstractions of the type predicates found in Scheme." There is a nice table giving the "correspondence between types, predicates, and expressions" is also given. There is also a PDF version PDF Version of the paper. The paper Polymorphic Type-Checking in Scheme (Jenkins-Leavens, 1996) provides a broader overview of the notation.


Posted to implementation by jon fernquest on 9/25/02; 2:49:18 AM

jon fernquest - Re: A Type Notation for Scheme  blueArrow
9/25/2002; 3:09:13 AM (reads: 867, responses: 0)
The Jenkins-Leavens type annotation might be useful in a more *incremental, evolutionary approach to software development* in which typing is added as a program grows larger and more complex (allowing you to break abstractions easily when the program is small while making sure the program maintains its integrity and doesn't collapse as it grows larger as Cardelli suggests in his "Typeful Programming" paper and as was discussed in a very long thread).


There are other Scheme type systems. Andrew Wright's PLT Scheme soft type checking seems goes hand in hand with input argument pattern matching. Bigloo Scheme also has "explicit typing"

http://www-sop.inria.fr/mimosa/fp/Bigloo/doc/bigloo-15.html

Has anyone compared these different systems?


The source for this system is a course resources page:

http://www.cs.iastate.edu/~leavens/ComS342-EOPL2e/resources.shtml

The source code file 'type-check-and-eval.scm' needed to run the type checker is in the directory:

http://www.cs.iastate.edu/~leavens/ui54/lib/

Ehud Lamm - Re: A Type Notation for Scheme  blueArrow
9/27/2002; 5:21:08 AM (reads: 748, responses: 0)
I finally had the time to follow this link. It is very well written, and explains many important concepts.

Alex Moffat - Re: A Type Notation for Scheme  blueArrow
9/28/2002; 6:57:56 PM (reads: 699, responses: 0)
You can also download the contents of http://www.cs.iastate.edu/~leavens/ui54/lib/ as a zip file from http://www.cs.iastate.edu/~leavens/ComS342-EOPL2e/library.shtml (at least it looks like that's the case)

Noel Welsh - Re: A Type Notation for Scheme  blueArrow
9/30/2002; 2:25:13 PM (reads: 705, responses: 0)

Has anyone compared these different systems?

Bigloo's type system revolves around enabling compiler optimisations and only supports simple "C-like" types. So no polymorphism or even function types!

Soft typing infers types and has a type system similar in expressivity to MLs. Soft typing never rejects a program; it just insert checks where it can't prove a program safe. The refinements of soft typing (MrSpidey and now MrFlow) are getting quite funky, with user interfaces that show how values flow around the program (good for understanding why a check is needed) and quite expressive type systems.

jon fernquest - Re: A Type Notation for Scheme  blueArrow
10/3/2002; 3:58:40 AM (reads: 693, responses: 0)
> Soft typing infers types and has a type system similar in
> expressivity to MLs...

Do you know of anyone who has got soft typing and units to work with implmentations other than MzScheme. I think MzScheme is great, I'm just wondering how portable soft typing is?