Subject: Re: mit-scheme+emacs+slime
From: rpw3@rpw3.org (Rob Warnock)
Date: Tue, 13 Feb 2007 07:26:59 -0600
Newsgroups: comp.lang.lisp
Message-ID: <-6CdnYSGzIA-IUzYnZ2dnUVZ_tadnZ2d@speakeasy.net>
jesse  <jessem_@_gmail.com> wrote:
+---------------
| 2. Is emacs (I miss vi already) really the only way to go?
+---------------

A heretic's answer: No, if you simply can't abide Emacs [I can't,
though not for lack of trying], don't despair. You can use "Vi" or
"Vim" to successfully code in Lisp (including Common Lisp & Scheme),
though you do lose certain accelerators available in Emacs, especially
the automatic reformatting/reindenting. Just be sure to familiarize
yourself with the features of "Vi/Vim" that *do* support Lisp,
e.g., paren matching, use of "%" as a motion character -- including
combinations with editing ops, such as "y%" or "d%", and the shifting
ops, such as ">%" and "<%" -- and the "." (repeat last change). IMHO
it also helps to set the left/right shift amount ("shiftwidth" or "sw")
to one (":set sw=1"). Then you can shift a whole s-expr [possibly
spanning multiple lines] right/left by placing the cursor on the
opening/closing paren and typing ">%" or "<%", respectively, then
one or more "." ops to continue shifting in the same direction.

It will also help if you develop a small set of personal functions
and/or macros for use in the REPL to replace some of the accelerators
available in Emacs. You don't need to do this all at once; just keep
in mind. When you discover you're typing the same thing over & over,
then maybe it's time for a convenience function/macro. [One of my
favorites is a REDO function, defined differently for each project
to do whatever is needed to reload/recompile anything that's changed
since the last time. So when you do a write from "Vi", type a (REDO)
into the REPL to update everything. If you're using ASDF then it's
as simple as (DEFUN REDO () (ASDF:OPERATE 'ASDF:LOAD-OP :MY-SYSTEM)).]

+---------------
| 3. How should I  approach the vast numbers of LISP variants?
+---------------

The biggest decision is Scheme versus Common Lisp. If you pick
Scheme, there are a *lot* of them, all quite different in the
available libraries, but one good one for a beginner is PLT Scheme
a.k.a. DrScheme. If you pick Common Lisp, almost all of them
support pretty much the full language, so it's not as hard to
change from one to another. I use CMUCL (mostly), but if you
use Windows that's not a viable choice (yet). There's a list of
free ones here <http://www.cliki.net/Common%20Lisp%20implementation>,
or both free & commercial Common Lisps (*and* Schemes) here
<http://wiki.alu.org/Implementation>.

+---------------
| 4. Although I glean the answer might be: ANYTHING!
|    What are the main uses/implementations of this language?
+---------------

My favorite answer to this [by the creator of the CLHS hypertext]:

    Please don't assume Lisp is only useful for Animation and Graphics,
    AI, Bioinformatics, B2B and E-Commerce, Data Mining, EDA/Semiconductor
    applications, Expert Systems, Finance, Intelligent Agents, Knowledge
    Management, Mechanical CAD, Modeling and Simulation, Natural Language,
    Optimization, Research, Risk Analysis, Scheduling, Telecom, and Web
    Authoring just because these are the only things they happened to list.
        -- Kent Pitman

As for myself, I only use it for "shell scripting", hardware debugging,
database-backed web sites, mail filters, graphing & plotting data,
system-building metatools, and other minor stuff like that.


-Rob

-----
Rob Warnock			<rpw3@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607