You still have to keep type information in your head when working with static programs.  Compiling isn&#x27;t all that you do with programs.<p>Not every expression in a program is rife with explicitly visible type. Not even in a language with declarations for all storage locations. Type inference seeks to minimize that, because it&#x27;s considered clutter.<p>However, the completely clutter-free static program looks much like a dynamic one! If I look at some snippet of OCaml or what have you, for all I know it could be dynamic.<p>The difference is that it&#x27;s constrained in invisible ways. (If it is already correct in its current form) it cannot be changed in certain ways and still be accepted for execution.<p>That doesn&#x27;t mean a thing to me when I&#x27;m just looking at it trying to understand it. I have to figure out what the types are, and connect all the pieces in my head.