> A statically type language requires you to think about two models of > your program at the same time: the static type model and the dynamic > behavioral model. A static type system ensures that these two > _different_ (that's important!) perspectives are always in sync.
I have trouble understanding your use of the wording "Model of a program". If it is a system that behaves according to the rules of your program then statements about your program should consider *all* possible models. If it is a formal system that makes statements about properties of your program than the static type system is a simplified model that is suitable for automatic analysis and your runtime model is in most cases nonexistent. Can you give a definition of a "model of a program"? Can you explain why Lisp doesn't have two (SBCL does do a lot of typechecking and gives type errors)? > This is > especially valuable in settings where you know your domain well and want > to rely on feedback by your compiler that you haven't made any mistakes > in encoding your knowledge. (A static type system based on type > inferencing doesn't essentially change the requirement to think in two > models at the same time.) It is also valuable when you don't know your domain very well and you want to rely on feedback by your compiler that you haven't made any mistakes in encoding your limited knowledge > A dynamically typed language is especially well suited when you don't > (yet) have a good idea about your domain and you want to use programming > especially to explore that domain. our domain). In the sense that you can start writing code without the compiler pointing out all but the most glaring holes in your program, I agree. Most of your arguments aren't very convincing and the thruth is that I have seem lisp programmers using the debugger to find out that you can't add a number and a hastable. The static view was not there and the dynamic view must have been too complicated so they had nothing to think about. Immanuel -- http://mail.python.org/mailman/listinfo/python-list