[Haskell-cafe] handling rank 2 types