Ar an ceathrú lá déag de mí na Samhain, scríobh stephen(a)xemacs.org:
> Can someone explain to this no-formal-education-in-the-language
Lisp user
> why we don’t have (with-open-file ...) and the rest of the Common Lisp
> stream API in XEmacs Lisp?
Mostly hysterical raisins, I would guess. I suppose the main issue is
that Emacs is an interactive text editor with a strong bias toward
"slurp it ALL into an Emacs buffer and operate on it there". If you
actually have an open I/O stream (pipe, network) then we do support
those, with comint and so on, but in a quite different way from
line-oriented streams (for example).
> (insert-file-contents ...) with offsets doesn’t really cut it for
> things like Perlish line processing.
I don't understand what you mean by "Perlish line processing". The
closest I can come up with is
(progn
(find-file "some/file")
(while (not (eobp))
(function-that-operates-on-a-line (point) (point-at-eol))
(forward-line 1)))
which demonstrates the "file-at-a-gulp" attitude. I suppose if you're
really worried about memory usage you could do partial buffering with
insert-file-contents as you mention, but the actual "read-line"
function would still just be `forward-line'.
My problem is the memory usage, and my laptop’s tendency to overheat. For
example, I have a natural-language dictionary with each entry on a separate
line and I’m generating a .db index; the memory usage is stupid. The same
will be true for anyone working on Unihan.txt or big database dumps.
--
Santa Maradona, priez pour moi!
_______________________________________________
XEmacs-Beta mailing list
XEmacs-Beta(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-beta