typeclassopedia: pointed, applicative, and monad