Most of the time spent programming is fixing errors, and anything that helps reduce programmer error should be encouraged. What does it mean to multiply PI by "hello"?That doesn't fit my experience in the slightest. Most of my time spent programming is figuring out the design of my system. The most time-costly class of "error" would be uncertainty about what exactly I want to build, which manifests as building something experimentally, playing with it, realizing it's not quite what I want, repeat. For instance, types can't help me decide if I want to implement my graphics library using SVG or WebGL. Sure I make errors — we all do — but I discover almost all of them almost immediately, and they're trivial to fix. Something like PI multiplied by "hello" isn't nearly as nefarious as "I misunderstood the linear algebra and now I'm getting weird looking results when I convert a rotation into a skew+scale", which I don't believe a typical type system can help with.
Benjamin San Souci
Edward de Jong / Beads Project