Having just converted a server process of about 1800 lines of untyped Racket to 1900 lines of typed Racket, I'd like to make some comments
1) I highly suggest starting in Typed Racket if you are going to go end up there. I made the mistake of writing it untyped and then retrofitting which clearly is the more difficult path. 2) The conversion caught one likely-to-happen-sometime bug, thank you. 3) The end-product appears to be a 50%-performance hybrid due to boundary contracts, but ameliorated runtime-wise by utilizing the typed/racket/no-check language after it's all working in type checked mode. 4) I failed to create a valid new language with conditional inclusion of typed and no-check variants, but a command line or in-program conditional ability to disable types would permit an easy to accept morphing systems which need to gently attain 100% typed nature. At the moment, I use a Unix shell script to doctor the #lang lines. For instance 'raco -no-check exe ...' would really be nice after concluding that my slow hybrid is operating correctly. 5) When retrofitting, Dr Racket nicely points out errors, which in quantity should perhaps be limited to speed the retrofit cycle. Being familiar with G++ template errors, I was not too shocked. One thing that I learned was instead of attacking the first error which often was deeper in a function, it was more profitable to start at the outside, i.e. the function signature, and allow that information to imply further information. I found that otherwise, I ended up with correct but superfluous annotations. 6) A few missing typed versions of libraries were what caused me to not start there, notably the lack of typed/db. Thanks, JG -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.