[racket] Typed Racket - Successful Conversion

From: Robby Findler (robby at eecs.northwestern.edu)
Date: Tue May 24 22:44:50 EDT 2011

Ah! Right. That makes sense.

FWIW, raco make will rebuild core libs, too (usually; raco setup
definitely does in the cases when raco make can't deal with changes
to, say, itself).

Robby

On Tue, May 24, 2011 at 9:00 PM, Ray Racine <ray.racine at gmail.com> wrote:
> Unfortunately I'm an emacs acolyte + Geiser and as a result was not getting
> the zos built that DrRacket would have given me for free.  So the slow down
> I experienced were more than what they would be for most people.  Self
> induced issue.  Ultimately I pushed down a lot of the "standard" code into
> several raco linked local planet libs and as they stabilized started raco
> fileinject'ing them locally.  This helped quite a bit.
> Somehow I missed 'raco make' to build the core non-lib code.  Thanks for
> that one.
>
> Ray
> On Tue, May 24, 2011 at 8:12 PM, Robby Findler <robby at eecs.northwestern.edu>
> wrote:
>>
>> DrRacket does this automatically.
>>
>> But the default settings will make .zo files with debugging on --
>> maybe there is some bad Typed Racket / errortrace interaction that
>> slows down compilation significantly?
>>
>> Robby
>>
>> On Tue, May 24, 2011 at 6:23 PM, Sam Tobin-Hochstadt <samth at ccs.neu.edu>
>> wrote:
>> > Ray -
>> >
>> > Thanks for the happy story!
>> >
>> > As for compile times, what I typically do is use `raco make' on the
>> > command line to compile things, which means that typechecking doesn't
>> > have to happen repeatedly.  For a 10k line project, I would expect
>> > this to make a substantial difference when changing files at the
>> > leaves of the hierarchy.  For the root of the hierarchy, there's not
>> > much to be done with the current architecture of Racket other than
>> > making Typed Racket faster (which we're working on).
>> >
>> > On Tue, May 24, 2011 at 4:09 PM, Ray Racine <ray.racine at gmail.com>
>> > wrote:
>> >> 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
>> >>
>> >
>> >
>> >
>> > --
>> > sam th
>> > samth at ccs.neu.edu
>> >
>> > _________________________________________________
>> >  For list-related administrative tasks:
>> >  http://lists.racket-lang.org/listinfo/users
>> >
>
>
>
> --
> The object of life is not to be on the side of the majority, but to escape
> finding oneself in the ranks of the insane. - Marcus Aurelius
>
> _________________________________________________
>  For list-related administrative tasks:
>  http://lists.racket-lang.org/listinfo/users
>



Posted on the users mailing list.