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.