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.
_________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users