Hi,

The function `join` flattens a double-layered monad into one layer and its type signature is 

  join :: (Monad m) => m (m a) -> m a

But when the first argument supplied is `(,)`, the type signature becomes 

  join (,) :: b -> (b, b)

in ghci. The monad constraint is lost when supplied the first argument. So my question is why the type constraint is lost and what monad is supplied here.

Regards,
Qingbo Liu