Since we're talking of 10+ lines of code and only one case among many
possible (you might also want to do something fairly similar, but not
quite the same, as iterating over all words or characters in a file,
doing something else than counting, etc.), I would rather see it
implemented in a library as combinator. What I have in mind is a
function that goes over a file and invokes some user code on each block
of bytes/characters/lines/words/... The points of customization would
be:
* how to detect the start and end of block
* routine to pass the blocks to
Then, on top of this combinator, build block-specific ones: for byte,
char, line, word blocks. Also make it possible to customize buffering
behavior.
Being new to OCaml, I'm interested in comments - is what I suggest a
good idea? If yes, why hasn't anyone implemented it yet? One could
argue that it's trivial and can be implemented in each use case anew,
but among 5 different solutions posted so far, each has its own
problems, besides the supposedly ideal 5-th -- I'd take this as an
indication that, although simple, it's not really trivial to write this
thing.