More efficient typechecking of System F pattern-matching
To type-check a branch of a pattern-matching, we created a new environment to bind newly introduced pattern variables, and then concatenated this environment with the surrounding environment. But this is inefficient and we can instead directly extend the surrounding environment with the new bindings.