changed zip2 and apply2 to applicative functor HPair