Multiple monads in one do-block : <p>I am currently trying to learn Haskell and I really cannot understand the concept of using just one one monad in do-block. If I have <code>foo :: Int -&gt; Maybe Int</code> and want to use for example function <code>hIsEOF :: Handle -&gt; IO Bool</code> in this function. Can someone please explain me on some basic example how would I use <code>hIsEOF</code> and could somehow work with <code>Bool</code>?</p>

<p>I have been trying to search here and on google, but I always run into some advanced stuff where basically noone explains how, they just give advice on how to fit it right into OP's code. I saw monad transformers mentioned in those threads but even after reading few resources, I cannot seem to find the right way on how to use them.</p>
