
On 7 Sep 2007, at 11:22 pm, Chaddaï Fouché wrote:
From what I can see of your program, it would greatly benefit from using Data.ByteString, is there an obvious reason not to use it ?
I am writing a a set of tools to process a legacy programming language, as I said. Speed is not, in fact, a central issue. It's just something that came up while I was exploring ways to express it. What *is* a central issue is getting something *right*, *readable*, *rapidly*. Using getContents and walking down a list I get something which is close to Lex in compactness but is much easier to work with; Lex has a nasty habit of either failing to cope entirely or requiring seriously nasty state hacking when you do anything even a little out of the way; Haskell list processing doesn't. Also, I greatly prefer writing to standards. While I turn to GHC for speed (when I can; trying to install GHC 6.6 under Solaris 2.9 was an amazingly painful and ultimately unsuccessful experience), I try to use other Haskell compilers as well, and that means sticking to standard libraries. Data.ByteString is many things, but defined in the Haskell 98 report is not one of them.
(Some list operations are too expensive with ByteString but for most string processing it's perfectly fine and much faster than String).
I'm sure it's true, but it's quite irrelevant to my question, which is "why is using getChar so much slower than using getContents"?