[racket] Code that double checks is good, bad, other?

From: Neil Van Dyke (neil at neilvandyke.org)
Date: Fri Oct 3 14:48:04 EDT 2014

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.


Posted on the users mailing list.