reading file to list
xahlee at gmail.com
Sun Jan 18 01:30:24 CET 2009
Xah Lee wrote:
> • A Ruby Illustration of Lisp Problems
On Jan 17, 12:30 pm, André Thieme <address.good.until.
2009.may... at justmail.de> wrote:
> In the Lisp style Clojure for example one does exactly the same as
> Jillian James (JJ) did in Ruby:
> (map #(map (fn [s] (Integer/parseInt s)) (.split % "\\s")) (line-seq
> (reader "blob.txt")))
Note that you have nested map. This is a problem of function chaning
as i detailed.
The other problem of cons, is commonly seen. Just about every week, we
see some perhaps beginning lisper asking how to do various trivial
manipulation problem, which you don't see such question or frequency
in any of modern high level lang forms.
The frequently asked list manipulation question we see include how to
append, prepend, or anything involving nested list such as
partitioning, reordering sublists, getting leaves, interpretation of
leaves, etc. This is caused by the cons.
associated lisp problem compound the issue. Namely, the not exactly
regular syntax, and the eval model of sometimes symbol sometimes
uneval'd symbol, e.g. “'(...)”, “`(...,@ ...)” things.
The clojure example you gave above, apparently inherited the irregular
syntax problem. (you see the #, , % things, which is breaks the
lisp's sexp idea) Also, all modern lisp basically all get fucked up by
inheriting the cons (e.g. clojure, NewLisp, Arc lisp, Liskell). Often,
they change the semantic a bit apparently as a mesaure towards solving
the cons problem. (and Qi Lisp creates a huge bag of ad hoc, extremely
ugly, syntax soup)
Advice: if you are creating a lispy lang, two things:
• stick to a _pure_ nested syntax, no exception whatsoever. (e.g. no
more ` ' # % shits) If you want, add a transparent layer on top to
support arbitrary algeraic notation. (e.g. look at Mathematica, CGOL)
• get rid of the cons. (you can still implement the so-called linked
list, but no where it should be shown to the programer)
• Fundamental Problems of Lisp
More information about the Python-list