<div dir="ltr"><div class="gmail_extra"><br></div><div class="gmail_extra">Hi.<br><br></div><div class="gmail_extra"><div class="gmail_quote">On Fri, Dec 4, 2015 at 12:35 AM, Daniel Trstenjak <span dir="ltr"><<a href="mailto:daniel.trstenjak@gmail.com" target="_blank">daniel.trstenjak@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
<br>
Looking at your code, it's easier not to put the `IO String` computation<br>
of the hash into a tuple, but first compute all hashes:<br>
<br>
   hashes <- sequence (map Md5s.prefix_md5 filenames)<br>
<br>
<br>
And if you want the hash and the filename grouped in a tuple:<br>
<br>
   zip filenames hashes</blockquote><div><br></div><div>What if I want to be able to deal gracefully with files that aren't readable, whether due to permissions issues or I/O errors?  I agree that zip'ing is easier, but is it as robust?<br><br></div><div>Thanks. <br></div></div><br>-- <br><div class="gmail_signature">Dan Stromberg</div>
</div></div>