generalise pullTerm
add explicit absurd patterns

We can't use `case' since we need the user to specify the type.