I'm new to lisp (heck, I haven't even started with it yet), but I'm
wanting to learn the basics of it so I can dig in and work on a theme or
two for a window manager called Sawfish (which uses lisp as it's
theme-config stuff). Is there a FAQ that has things like links to
beginner tutorials and the like? I'd greatly appreciate this.
Thank you,
Jeremy
You're in for some serious enlightenment (not the window manager,
of course ;)).
> wanting to learn the basics of it so I can dig in and work on a theme or
> two for a window manager called Sawfish (which uses lisp as it's
> theme-config stuff). Is there a FAQ that has things like links to
> beginner tutorials and the like? I'd greatly appreciate this.
There is a FAQ (available at faqs.org), but I would first recommend
the Association of Lisp Users website at www.alu.org. It's a superb
website with loads of information for Lisp programmers of all levels.
In particular, there is a great deal of material in the "Learning Lisp"
category ( http://www.lisp.org/table/learn.htm ), including pointers
to on-line books and tutorials. There is a lot of free information
out there on Lisp; much of it very well done.
Gabe Garza
Sawfish is written in rep, a language that's a strange cross between
scheme and elisp, so standard language tutorials won't necessarily
teach you what you need to know for hacking sawfish. However, many of
the features of rep are similar to those in other lispy
languages. Just be sure to remember that rep isn't quite any of those
languages. You might want to check out your info docs for librep and
sawfish to see the API and some language details. Sadly, these docs
have been mostly out of date for as long as I remember. Most often, I
just end up reading the source to sawfish or rep itself... :\
--
-> -/- - Rahul Jain - -\- <-
-> -\- http://linux.rice.edu/~rahul -=- mailto:rahul...@usa.net -/- <-
-> -/- "I never could get the hang of Thursdays." - HHGTTG by DNA -\- <-
|--|--------|--------------|----|-------------|------|---------|-----|-|
Version 11.423.999.220020101.23.50110101.042
(c)1996-2000, All rights reserved. Disclaimer available upon request.
> Jeremy Whetzel <li...@toadmail.com> writes:
> > I'm new to lisp (heck, I haven't even started with it yet), but I'm
>
> You're in for some serious enlightenment (not the window manager,
> of course ;)).
Mmmmmm... the 'E' word... I love it already. =0) (and not because of
the window manager)
>
> > wanting to learn the basics of it so I can dig in and work on a theme or
> > two for a window manager called Sawfish (which uses lisp as it's
> > theme-config stuff). Is there a FAQ that has things like links to
> > beginner tutorials and the like? I'd greatly appreciate this.
>
> There is a FAQ (available at faqs.org), but I would first recommend
> the Association of Lisp Users website at www.alu.org. It's a superb
> website with loads of information for Lisp programmers of all levels.
> In particular, there is a great deal of material in the "Learning Lisp"
> category ( http://www.lisp.org/table/learn.htm ), including pointers
> to on-line books and tutorials. There is a lot of free information
> out there on Lisp; much of it very well done.
Wow... this is a great site! Thanks for the link! This will keep me
busy for a while.
Jeremy
> Sawfish is written in rep, a language that's a strange cross between
> scheme and elisp, so standard language tutorials won't necessarily
> teach you what you need to know for hacking sawfish. However, many of
> the features of rep are similar to those in other lispy
> languages. Just be sure to remember that rep isn't quite any of those
> languages. You might want to check out your info docs for librep and
> sawfish to see the API and some language details. Sadly, these docs
> have been mostly out of date for as long as I remember. Most often, I
> just end up reading the source to sawfish or rep itself... :\
It seems that there are a lot of, uhm, 'versions' (for lack of a better
word) of lisp out there. I think I understand what you mean, though,
and for the theme-ing, I think you're right about just having to look at
the source itself. But at least all of this has gotten me very
interested in lisp itself. Hopefully a little bit of learning will at
least help with how to follow some of the syntax and the like (even if
it's not exactly the same, hopefully it will be somewhat similar)
Thanks for the pointer,
Jeremy
This is very true. "Lisp" is a family of languges, more than a single
language. Some of the things they have in common is that they look the
same: Code is written as lists whose first element define the nature and
meaning of the rest of the elements of the list means, and can be one of
a regular operator, where the remaining elements of the list are also
evaluated according to this rule before the operator is called with the
values as arguments, a macro, which processes the remaining elements of
the list itself in order to return a new form to replace itself, or a
special operator, where the meaning of the remaining elements are unique
to that special operator, much like a macro. Typically, both macros and
special operators make an effort not to impose a burden on the reader of
the code, and Lisps in general have furthermore agreed on a most of them,
so what you learn about let and let*, cond and if, setq, catch and throw,
progn, quote, etc, and the syntax you learn should be almost uniformly
applicable, too, like 'x for (quote x), ; for comments, "" for strings, `
and , for constructed lists, \ for preventing a character from its normal
interpretation and making it a constituent character, whitespace between
most tokens, because almost everything else is considered a constituent
character of a potential symbol or number, and not much more...
Once you get the hang of the basic, common syntax and how to read Lisp
code based on the first word of a form (i.e., a list starting with a
symbol that names the form), reading any of the numerous Lisp family
members will show their differences more than the surface similarities
seem to let on.
| Hopefully a little bit of learning will at least help with how to follow
| some of the syntax and the like (even if it's not exactly the same,
| hopefully it will be somewhat similar)
It should take you a _very_ short time to get the hang of the syntax,
once you realize that there is very little _meaning_ in the syntax,
unlike most other programming languages. Many newcomers to Lisp seem to
struggle with the syntax because they want it to mean too much. All the
syntax does in most Lisps is to produce enable objects to be read into
memory. Most syntaxes are read and interpreted by the compiler, only,
and whatever objects the compiler sees are not seen by anything else.
This is probably one of the ways that Lisp differs the most from other
languages and it has had a huge impact on how the language has evolved
over the years. Whereas most language evolve by adding syntax, Lisp has
evolved by adding constructs at a more "semantic" level. The only thing
has caused Lisp to evolve syntax is adding new data types, while most
other language have not developed syntax for new data types. So while
you can implement linked lists in every language, Lisp added syntax to
make them easy to read and write so that both code and data could use the
simple syntax of lists. You may find, as most of us have, that this is
vastly superior to the way, e.g., the C family of languages "initializes"
data structures with a very limited number of built-in types -- their way
of extending the type system does not work for reading and writing them
in either programs or data. Lisp's idea of "code is data", that the
compiler uses regular language features to read in code, sets it off from
the rest in a fundamental way that many newcomers to Lisp take a long
time to figure out and appreciate. Once they "get it", other languages
tend to look fairly stupidly designed by comparison and the very strange
things that people do with their syntaxes is downright depressing.
///
--
Norway is now run by a priest from the fundamentalist Christian People's
Party, the fifth largest party representing one eighth of the electorate.
--
Carrying a Swiss Army pocket knife in Oslo, Norway, is a criminal offense.
> There is a FAQ (available at faqs.org), but I would first recommend
There's a new Lisp FAQ project:
http://www-jcsu.jesus.cam.ac.uk/~csr21/lispfaq.html
Paolo
--
EncyCMUCLopedia * Extensive collection of CMU Common Lisp documentation
http://web.mclink.it/amoroso/ency/README
[http://cvs2.cons.org:8000/cmucl/doc/EncyCMUCLopedia/]
A couple suggestions...
1.5 "Is Scheme a Lisp?"
Scheme is a member of the greater family of Lisp languages,
assuming that is considered to include others like Dylan and Emacs
Lisp. The design of Scheme predates the ANSI Common Lisp standard,
and some CL features such as lexical scoping may be considered to
have been derived from Scheme.
More detailed comparative discussions don't generally prove very
productive; those that are interested in discussing Scheme should
first consider discussing it in comp.lang.scheme, where discussion
would be much more welcome and appropriate.
2.1 In the discussion of GCL... It would be worth saying something like:
"GCL is not particularly compliant with the ANSI Common Lisp
specification as it predates that standard."
5.4 should have the obvious retorts:
If arrays and structures don't exist, then obviously MAKE-ARRAY and
DEFSTRUCT must be figments of the imagination. Similarly, since
Lisp only uses association lists to organize "database-like"
information, MAKE-HASH-TABLE must also be a figment of the
imagination.
Based on the nonexistence of the above figments of the imagination,
Perl and Python, with arrays, associative tables, and dictionaries,
must _obviously_ be manifestly superior.
--
(reverse (concatenate 'string "gro.mca@" "enworbbc"))
http://www.ntlug.org/~cbbrowne/linuxdistributions.html
A man without religion is like a fish without a bicycle.
> Paolo Amoroso <amo...@mclink.it> writes:
> > On Sat, 03 Nov 2001 19:34:00 GMT, Gabe Garza <gga...@kynopolis.org> wrote:
> >
> > > There is a FAQ (available at faqs.org), but I would first recommend
> >
> > There's a new Lisp FAQ project:
> >
> > http://www-jcsu.jesus.cam.ac.uk/~csr21/lispfaq.html
>
> A couple suggestions...
>
> 1.5 "Is Scheme a Lisp?"
>
> 2.1 In the discussion of GCL... It would be worth saying something like:
>
> 5.4 should have the obvious retorts:
Thanks for these -- patches and ideas (of new questions as well as
additions or modifications of answers) are welcome. As and when it
begins to look not wholly incomplete, I'll start posting it (with
guarantees about subject line and so on so it can be scored out of
existence if wished).
Cheers,
Christophe
--
Jesus College, Cambridge, CB5 8BL +44 1223 510 299
http://www-jcsu.jesus.cam.ac.uk/~csr21/ (defun pling-dollar
(str schar arg) (first (last +))) (make-dispatch-macro-character #\! t)
(set-dispatch-macro-character #\! #\$ #'pling-dollar)
> > > There's a new Lisp FAQ project:
> > >
> > > http://www-jcsu.jesus.cam.ac.uk/~csr21/lispfaq.html
> Thanks for these -- patches and ideas (of new questions as well as
> additions or modifications of answers) are welcome. As and when it
> begins to look not wholly incomplete, I'll start posting it (with
> guarantees about subject line and so on so it can be scored out of
> existence if wished).
Some comments:
- General: it might be useful to add some contact info about the FAQ
maintainer somewhere in the text.
1.1, 1.2: Perhaps some mention also of discussing non-standard lisps,
history etc. CLOS, too, since comp.lang.clos seems pretty quiet these
days.
1.3: While not strictly off-topic, this might be a good place to point
to the existence of comp.lang.scheme, comp.cad.autocad and various emacs
newsgroups for specific questions on Scheme, AutoLisp and Emacs Lisp.
- another question: What is Lisp1 / Lisp2. (Or was it Lisp-1 ?)
2.2: I think Digitool might also be worth mentioning.
-- perhaps also a footnote for those with historical interests
towards Symbolics?
3.2: Considering the number of people who have expressed dislike to the
name "partition" in this context, putting this to the FAQ as a
'standard' seems to be a little too strong endorsement for one
particular view.
3.3: This might be expanded to also other Scheme features commonly
discussed.
- perhaps a pointer to KMP's "political party" -paper, too?
--
> Christophe Rhodes wrote:
>
> > > > There's a new Lisp FAQ project:
> > > >
> > > > http://www-jcsu.jesus.cam.ac.uk/~csr21/lispfaq.html
>
> > Thanks for these -- patches and ideas (of new questions as well as
> > additions or modifications of answers) are welcome. As and when it
> > begins to look not wholly incomplete, I'll start posting it (with
> > guarantees about subject line and so on so it can be scored out of
> > existence if wished).
>
> Some comments:
>
> - General: it might be useful to add some contact info about the FAQ
> maintainer somewhere in the text.
Well, the idea was that it would be collaborative, not one single
maintainer, but I have placed some direct contact information for me
there for now. I would prefer it, though, if discussion went to some
list (or here) rather than direct to me, because firstly I am
sometimes (shock, horror!) away from a computer for semi-extended
periods of time, and secondly many eyeballs (and mouths) make smaller
chance of mistakes.
> 1.1, 1.2, 1.3, - another question: What is Lisp1 / Lisp2. (Or was it
> Lisp-1 ?) 2.2, 3.3
Thanks -- I've done what I can on those, though I haven't got much
that I personally can contribute about Symbolics.
> 3.2: Considering the number of people who have expressed dislike to the
> name "partition" in this context, putting this to the FAQ as a
> 'standard' seems to be a little too strong endorsement for one
> particular view.
True. I'm hoping that I (or anyone else, come to that) will get round
to going through the name-changing procedure (whatever that may turn
out to be -- possibly just bodily moving a bunch of pages on CLiki)
for partition->split-sequence before this FAQ gets to the "official,
regularly posted" phase.
All name battles aside, I'd like to think that the process we went
through with attempting to build a community standard is useful, and
that a reference to it should remain if only to say that these things
can be done.
Thanks,
> Christophe Rhodes wrote:
>
> > > > There's a new Lisp FAQ project:
> > > >
> > > > http://www-jcsu.jesus.cam.ac.uk/~csr21/lispfaq.html
>
> > Thanks for these -- patches and ideas (of new questions as well as
> > additions or modifications of answers) are welcome. As and when it
> > begins to look not wholly incomplete, I'll start posting it (with
> > guarantees about subject line and so on so it can be scored out of
> > existence if wished).
>
> Some comments:
>
> - General: it might be useful to add some contact info about the FAQ
> maintainer somewhere in the text.
Well, the idea was that it would be collaborative, not one single
maintainer, but I have placed some direct contact information for me
there for now. I would prefer it, though, if discussion went to some
list (or here) rather than direct to me, because firstly I am
sometimes (shock, horror!) away from a computer for semi-extended
periods of time, and secondly many eyeballs (and mouths) make smaller
chance of mistakes.
> 1.1, 1.2, 1.3, - another question: What is Lisp1 / Lisp2. (Or was it
> Lisp-1 ?) 2.2, 3.3
Thanks -- I've done what I can on those, though I haven't got much
that I personally can contribute about Symbolics.
> 3.2: Considering the number of people who have expressed dislike to the
> name "partition" in this context, putting this to the FAQ as a
> 'standard' seems to be a little too strong endorsement for one
> particular view.
True. I'm hoping that I (or anyone else, come to that) will get round
to going through the name-changing procedure (whatever that may turn
out to be -- possibly just bodily moving a bunch of pages on CLiki)
for partition->split-sequence before this FAQ gets to the "official,
regularly posted" phase.
Name battles included, though, I'd like to think that the process we
went through with attempting to build a community standard is useful,
and that a reference to it should remain if only to say that these
things can be done.
Thanks,
Christophe