This approach leads to an incorrect type checker, in that programs which lead to a runtime
error will type.  See tricky-5 and/or variations of it.
