pretty prints with showM instead of show (to show thunks/vals instead of addresses)
Fixes bug when interpreting a lambda abstraction over an argument with a polymorphic type