
Manu wrote:
Should I introduce more strictness ? replace lists with more efficient data structures (ByteStrings, Arrays) ?
Derek wrote:
Yes. Treating lists like arrays is always a recipe for heartbreak.
Here it costs very little - the lists are all short, mostly of length exactly 9.
If you did want to try to match the python code exactly there are mutable arrays and such.
I think Manu's code is about as exact as you can get for a direct translation into pure Haskell. You could emulate Python using imperitive-style Haskell, but that would be a different sort of port. If speed is really important for you, there are many ways to optimize a Haskell program - the techniques Derek mentioned, and many more, all the way down to low-level bit fiddling on the bare metal. There are some great people on this list who are very, very good at that. But I personally find that for my own purposes, pure, simple, clear Haskell is almost always more than fast enough. And it saves truckloads of debugging time. Regards, Yitz