Hi Andrew,<br><br>I don&#39;t know whether it&#39;s intentional, but the patterns for &quot;case line of&quot; are not exaustive. Are you sure you do not expect anything else apart from a single &quot;.&quot; or a line starting with &#39;#&#39;? <br>
<br>More below:<br><br><div class="gmail_quote">On Mon, May 5, 2008 at 1:45 PM, Andrew Coppin &lt;<a href="mailto:andrewcoppin@btinternet.com">andrewcoppin@btinternet.com</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d">Neil Mitchell wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">hGetContents might be a different way to write a similar thing:<br>
<br>
read_args h = do<br>
 &nbsp; &nbsp; src &lt;- hGetContents h<br>
 &nbsp; &nbsp; let (has,rest) = span (&quot;#&quot; `isPrefixOf`) $ lines src<br>
 &nbsp; &nbsp; return (map tail has)<br>
<br>
Of course, depending on exactly the kind of IO control you need to do,<br>
it may not work.<br>&nbsp;
 </blockquote></div></blockquote><div>Please correct me if I am wrong; but the rest of the contents from the handle h will be unavailable after the evaluation of this function: it goes into a semi-closed state. (Correctly so: &#39;src&#39; is supposed to have the entire contents obtained from h if needed.)<br>
<br>Another minor observation: if the partial pattern in the original code was intentional, then this is not exactly the same.<br><br>what about<br><br>read_args&#39; :: [String] -&gt; ([String],[String])<br>read_args&#39; src = span (&quot;#&quot; `isPrefixOf`) $ lines src<br>
<br>and then using<br><br>s &lt;- hGetContents<br>let (arg, rest) = read_args&#39; $ lines s<br>...<br><br>So that you can get both the result and the remaining list of lines, in case you need them. Again, this does not exactly stop where there is a &quot;.&quot; on a single line; it stops as soon as it gets a line without a &#39;#&#39;.<br>
<br>Abhay<br><br></div></div>