This is a long-standing bug really (Trac #900). The poly_id passed
to tcSpecPrag should be zonked, else it calls tcSubExp with a non-zonked
type; but that contradicts the latter's invariant.
I ended up doing a bit of refactoring too. The extra lines are
comments I think; the code line count is reduced.