The type checking in Racket is a big help in debugging programs and to prevent crashes that shut down the whole of the computer (as far as seen my the current user). I don't know how the most recent version of Fortran nowadays handles type-checking, but in the sixties and seventies it did not any type-checking, and programmers usually did not either. This is a big burden on debugging programs, but eventually produced fast programs. Now for Racket we have typed/racket and unsafe libraries. Typed racket remains type-checking when passing module borders. Unsafe libraries require the use of for example 'unsafe-fx+' for addition of integer numbers instead of a simple symbol '+' and may crash too, I think. (Nevertheless, with the debug option disabled, error messages point to to point of detection without references to the point of the problem proper. In that case, if it is not clear where the bug is located, I enable the debug option and run again, which usually can use me to find the cause of the problem rather than the point of its detection. )
I wonder: would it be possible to include a racket language option that omits all type checking? Probably much work, I think. I think that an option to omit all type checking can be useful for the preparation of fast racket programs. For debugging, it should be possible to disable this option, of course. That is, type checking is to be included or omitted in the expansion phase. Complicated, because expansion phases can be nested.
I know, without type checking a program may crash. In the early days we looked at a dump to see where the crash was caused (not easy). Nevertheless, how do you think about an option that allows omission of all type checks? In case of a crash enable type checking and run the program again to see where the crash came from? (Well, probably some checks should be maintained)
I look forward to your opion about this.