On 2019-08-02 5:38 p.m., Benjamin Franksen wrote:

But I could not find the

instance Monoid a => Monad ((,) a)

documented anywhere in the base package.

If you look at the list of instances under the definition of Monad, you’ll see Monoid a => Monad ((,) a) | Since: 4.9.0.0 in the list. Clicking on the # Source link takes you to the source of GHC.Base:

instance Monoid a => Monad ((,) a) where
    (u, a) >>= k = case k a of (v, b) -> (u <> v, b)