Hello,<br><br> I am wondering if this code can be made a bit nicer?<br><br> I am checking if a file exists... and then if it exists I&#39;m checking whether it&#39;s older than two hours from now. It is a bit annoying to have that second block in the else (i could make a second function but i think it all belongs in this function).<br>
<br> This structure makes me think about the Maybe monad, where it would automatically exit after it would find out that the file doesn&#39;t exists, instead of having a cascade of if statements inside one another.<br><br>
 But this function is already in the IO monad (maybe I&#39;m thinking about this in the wrong way though).<br><br> Any idea for an improvement?<br><br>-- don&#39;t re-fetch if I fetched in the last 2 hours<br>needToFetchAgain :: FilePath -&gt; IO Bool<br>
needToFetchAgain export_filename = do<br>    exists &lt;- doesFileExist export_filename<br>    if (not exists)<br>        then return False<br>        else do<br>            modif &lt;- getModificationTime export_filename<br>
            curTime &lt;- getClockTime<br>            let diff = diffClockTimes curTime modif<br>            return $ tdSec diff &gt;= (3600*2) -- 2 hours<br><br>Thank you!<br><br>Emmanuel<br>