Strategies to cope with incremental development often emphasize
the need to shorten the edit-test cycle, and thus favour dynamic
languages such as Lisp and its derivate CLOS, or Smalltalk. In this
logic, static typing, which is based on redundancy checking, is
naturally felt counter-productive, since it makes both edition and
compilation heavier, and thus typically lengthens, even significantly,
the edit-test cycle.
It is however often argued that tools ultimately benefit from the
semantic information expressed through typing, and tend to reduce the
duration of this cycle. [Stroustrup94] mentions for instance
intelligent programming environments with incremental compilation.
Our goal here is not to advocate against weak or dynamic typing,
in favour of a strategy based on strong static typing. We shall,
however, try to show that such a strategy is still a reasonable
choice, and go on exploring it without further questioning. We will
stick to adopting it consistently, even if this eventually involves
introducing some apparent extraneous complexity.