<div dir="ltr">Still on the ICFPC 2007 topic<br><br>I am curious about one thing. If I read the file applying hGetContents to a ByteString (Lazy or Strict) or a String, it seems to read much faster than the version where I construct a sequence.<br>
<br><br>&nbsp;&nbsp;&nbsp; main = do <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (arg1:args)&lt;-getArgs <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hIn &lt;- openFile arg1 ReadMode<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c &lt;-BL.hGetContents hIn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --Really Fast<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let dna =&nbsp; c<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r&lt;-return (process dna)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print (show (r))<br><br><br><br>&nbsp;&nbsp;&nbsp; main = do <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (arg1:args)&lt;-getArgs <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hIn &lt;- openFile arg1 ReadMode<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c &lt;-hGetContents hIn<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let dna =&nbsp; fromList c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --Kind of slow<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r&lt;-return (process dna)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print (show (r))<br><br><br>I think the &quot;fromList&quot; overhead will be compensated by the O(log(n)) functions on a Seq, against the O(n) counterparts on the strings.<br><br>
<br>What are your considerations about using Data.Sequence?<br><br><br></div>