I think someone from the Felleisen extended family of researchers will have something to say on types (both theory and practice) when they get a chance.

Two very general comments, IMHO:

* Type checking (static, runtime, mixed, other) is one of many mechanisms and disciplines that can influence correctness and maintainability. It's often a very useful tool, but one of many.

* Nontrivial software development is craft with constant decision-making and balancing at many levels. You're always dynamically balancing trade-offs in performance, productivity, agility, maintainability, degree of correctness, reliability, available technology, collaboration, etc., relative to your requirements, resources, and interdependencies. You never have perfect information, and "best practices" are not always best (and sometimes very wrong). And each of those topics has its own complicated space within it. With Racket, what you balance includes static type checking, and you have a few options there.[*]

[*] Though none of them currently exactly what I'm thinking of as the general-purpose ideal. But still more flexibility than you'll find elsewhere.

Neil V.

____________________
 Racket Users list:
 http://lists.racket-lang.org/users

Reply via email to