<div>Hi Daniel <br></div><div>   Wow that&#39;s fantastic. Could you explain those further optimisations a bit more please? Especially the whole &quot;more lazyness&quot; thing.</div><div><br></div>
Timings here:<br>
Your last ByteString code: 128s<br>
That with corrected index calculation: 172s<br>
Correct indices and distance orig new = f m n instead of memf m n: 99s<br>
That and an array for the substitution cost: 64s<br>
<br>
String IO, substitution cost array and a suitably lazy break-early distance function: 1.7s<br>
That and a lazier surcharge function: 1.5s<br>
The same with ByteString IO: 1.4s<br>
<br>
Yes, I&#39;d say that qualifies as a significant speedup.<br>
<div><div class="h5">_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
</div></div><br>