3 ms·
A big one is lazy I/O[1]. It is really easy to mess up the order that operations happen in when using IO operations from Haskell's standard library. The non-sta
by TheCoelacanth 8y ago
A big one is lazy I/O[1]. It is really easy to mess up the order that operations happen in when using IO operations from Haskell's standard library. The non-standard library alternatives like conduits or pipes are more complex, but much harder to mess up.
[1] https://stackoverflow.com/questions/5892653/whats-so-bad-about-lazy-i-o https://stackoverflow.com/questions/5892653/whats-so-bad-abo...
- KirinDave 8y agoI agree lazy file I/O can be dangerous and needs to vanish, but I'm not sure this counts as an "algorithmic" complaint, which is what I was really curious about. I also don't think you need Conduit or Pipes or any other performance destroying free Monad libraries to deal with it. My hot take: Conduit is in fact awful and radically overused and multiple superior options exist.
- sdegutis 8y agoBy saying "algorithmic," I used the wrong word. Lazy IO is a great example of what I meant.
- KirinDave 8y agoI totally agree the prelude is full of cruft and needs to be scraped and redone fully. But the data structures libraries are all really good and if we could just pull in the succinct and unordered stuff, it's gone some of the best data structures a standard library can ask for.