[racket] Typed Racket - Successful Conversion

From: Ray Racine (ray.racine at gmail.com)
Date: Tue May 24 19:09:46 EDT 2011

This weekend I completed a 3 weekend exercise converting just short of 10K
wc -l lines of racket code.  All told it took 3 weekends to get there.  I
did it because it appears 10K lines is about my conceptual limit given my
slovenly documentation habits.

The old code worked just fine, however it was no longer readily apparent to
my why this should be the case.

Some observations:

   - 95% of the time adding signatures was very straight forward.
   - In <2% I had some difficulties, some self inflicted, some hitting some
   rough areas where things are not yet competed in typed Racket, I was always
   able to come up with something that worked.
   - Was surprised by the number of sunny day assumptions in my original
   code  Typing forced me to handle all "cases".  The code is now more robust
   then before.
   - The typing syntax overall is really quite good.  It did not come across
   as an afterthought bolt-on.
   - require/typed works cleanly to "lift" untyped racket code from 3rd
   party libs into typed land.
   - The time it takes to initially type check a high up in the module
   hierarchy module does start to impact the development cycle however.

Overall the doing and completing of the migration took a pile of code on the
verge of anarchy and put it back under control.  I feel confident it could
double in size a number of times and remain so.

I think typed racket is a huge win.  Controversially, (oh boy) I'd go as far
to say Racket should just go 100% typed from bone to guts, top to bottom.

Racket - The Programming Language With The (Soon To Be) Most Advanced Type
System In The World.  *whew*

Who'd a thunk it.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20110524/ea9f7d97/attachment.html>

Posted on the users mailing list.