category-theory How is it possible that the default implementations of Haskell's Bifunctor first and second compose? I've been studying the category theory for about three months now. Recently, I felt surprised with the definition of Haskell's Bifunctor: class Bifunctor f where // type signatures bimap :: (a -> c) -&