haskell Haskell 98 bifunctors