Jens Axel S�gaard <usenet@soegaard.net> wrote:
+---------------
| Thomas A. Russ skrev:
| > For practical use as a programming language, I would recommend Common
| > Lisp, since it is a larger language with more general tools available.
|
| Which general tools are you thinking of?
+---------------
Dunno which ones Thomas meant, but what pulled *me* from Scheme to
CL were things like these, all nicely pre-compiled & optimized in
any conforming implementation:
- DEFMACRO (which for the things I do is IMHO nicer than SYNTAX-RULES)
- The almost-universal provision of :START/:END (and :START1/:END1/
:START2/:END2, when appropriate) keyword args on sequence functions.
- MAKE-HASH-TABLE, GETHASH, (SETF GETHASH), & REMHASH
- Specialized vectors & multi-dimensional arrays.
- POSITION, MISMATCH, SEARCH, & SUBSEQ (*especially* MISMATCH,
which is really a sort of "match-until" operation)
- PARSE-INTEGER (in all its glory)
- CONCATENATE, COERCE, MAP
- READ-FROM-STRING & WITH-INPUT-FROM-STRING
- FORMAT & WITH-OUTPUT-TO-STRING
- LOOP (especially using multiple iteration variables; automatic
destructuring of iteration variables; and COLLECT & COLLECT INTO)
- READ (to load config files & small ad-hoc databases)
- Reader macros (especially the ability to write a "0x"-reading macro)
Not in the ANSI CL standard, but readily-available as add-ons
(just to name a very few):
- HTOUT & CL-WHO &c. HTML-generating macros
- CLX, Ltk, & other GUI tools.
- PG & CL-SQL (connections to SQL databases)
- SPLIT-SEQUENCE & CL-PPCRE (fast regexps)
- CL-PDF & CL-TYPESETTING document generators/formatters.
Other people may have other favorites.
-Rob
p.s. My experience is that MISMATCH is one of the most under-recognized
or under-appreciated functions in CL, at least by newbies such as I was.
It works *very* nicely with POSITION, so well that I very seldom have to
resort to regexps for parsing text files. And using :START{,1,2}/:END{,1,2}
to constrain the searches/matches allows most string parsing to be done
"in-place", lessening the need to cons up transient temps with SUBSEQ.
p.p.s. CL *does* have FILTER, except it's called REMOVE-IF-NOT.
-----
Rob Warnock <rpw3@rpw3.org>
627 26th Avenue <URL:http://rpw3.org/>
San Mateo, CA 94403 (650)572-2607