3.2. Monad Types

The type sig of a function that "returns" a monad indicates the type of the side-effect and the type of the return value

Prelude> :type getLine
getLine :: IO String

In this case, the side-effect (or "action" or "computation") is an IO computation, and the return value is a string.

sumTreeM :: Tree Int -> Holder Int

In this case, the side-effect / action / computation is a "Holder" (whatever that is) and the return value is an Int.