f



Which lisp for a (lisp) novice?

I'd like to learn lisp but I'm confused with the many variants I'm finding.

What would you recommend for an experienced programmer in other 
languages (mainly C and perl), wanting to learn lisp?

Should be a well documented lisp and working in Mac OS and main UNIXes 
(Solaris, HP-UX, AIX, ...)

I've found and enjoyed the "Practical Common Lisp" book, mainly because 
it starts with realistic examples, not the car/cdr/lists I had found in 
the past that lead me to the wrong conclusion that lisp was "only" good 
at processing abstract lists and could do nothing useful.

A bit more reading in this ng seems to suggest that Common Lisp is not a 
good choice, so I'd like to have some more opinions before spending to 
much time learning the wrong stuff.

What do you think? Ideas and criticisms welcome.

--
Toni
0
devegades (17)
4/30/2006 8:09:07 PM
comp.lang.lisp 16861 articles. 5 followers. Post Follow

12 Replies
1355 Views

Similar Articles

[PageSpeed] 25

Allegro CL supports FreeBSD, HP-UX, Linux, Solaris, Tru64, Mac OS X,
Windows.  Lispworks runs on HP-UX, OSF1, Solaris, Linux, Mac OS X,
Windows.  These are both commercial products available with a free
personal licence.

CMUCL, SBCL, CLISP are open source and well supported on UNIX
platforms.  CMUCL+SBCL have native code compilers.  I don't use these
and so I can't comment on the documentation.

0
4/30/2006 8:50:05 PM
If you're using OS X then OpenMCL and SBCL are both good. But if you're 
using one of the new Intel Macs OpenMCL doesn't work yet. I use SBCL on 
my Intel mac mini. Setup is pretty straight forward, you just download 
unzip and run.

-Jeffery

On 2006-04-30 16:50:05 -0400, "Mike T" <michaelcthompson@gmail.com> said:

> Allegro CL supports FreeBSD, HP-UX, Linux, Solaris, Tru64, Mac OS X,
> Windows.  Lispworks runs on HP-UX, OSF1, Solaris, Linux, Mac OS X,
> Windows.  These are both commercial products available with a free
> personal licence.
> 
> CMUCL, SBCL, CLISP are open source and well supported on UNIX
> platforms.  CMUCL+SBCL have native code compilers.  I don't use these
> and so I can't comment on the documentation.


0
jz87 (58)
5/1/2006 12:34:57 AM
Toni wrote:
> A bit more reading in this ng seems to suggest that Common Lisp is not a
> good choice, so I'd like to have some more opinions before spending to
> much time learning the wrong stuff.

It seems that you are asking whether to learn Common Lisp, as opposed
to scheme, emacs lisp, dylan . . .?  Given that you like Practical
Common Lisp, dislike the list-heavy school of lisp programming, and
have perl experience (another ugly-but-powerful language), that seems
to suggest that common lisp IS a good choice.

If you're actually asking about what implementation of common lisp to
choose, the similarities outweight the differences.  Use sbcl + slime +
emacs if you don't mind a little bit of work setting up your own tools,
and lispworks otherwise.

0
5/1/2006 1:57:59 AM
Toni <devegades@gmail.com> writes:

> I'd like to learn lisp but I'm confused with the many variants I'm finding.
>
> What would you recommend for an experienced programmer in other
> languages (mainly C and perl), wanting to learn lisp?
>
> Should be a well documented lisp and working in Mac OS and main UNIXes
> (Solaris, HP-UX, AIX, ...)
>
> I've found and enjoyed the "Practical Common Lisp" book, mainly
> because it starts with realistic examples, not the car/cdr/lists I had
> found in the past that lead me to the wrong conclusion that lisp was
> "only" good at processing abstract lists and could do nothing useful.
>
> A bit more reading in this ng seems to suggest that Common Lisp is not
> a good choice, so I'd like to have some more opinions before spending
> to much time learning the wrong stuff.
>
> What do you think? Ideas and criticisms welcome.

I think clisp is the best documented of the free lisps, and it works
on main UNIXes including MacOSX.  Unfortunately, I don't think it
would work on MacOS.  At least recent versions.  Perhaps some older
version of clisp worked on MacOS, after all clisp worked on Amiga...


-- 
__Pascal Bourguignon__                     http://www.informatimago.com/

"You question the worthiness of my code? I should kill you where you
stand!"
0
pjb (7869)
5/1/2006 6:54:53 AM
En/na Jeffery Zhang ha escrit:
> If you're using OS X then OpenMCL and SBCL are both good. But if you're 
> using one of the new Intel Macs OpenMCL doesn't work yet. I use SBCL on 
> my Intel mac mini. Setup is pretty straight forward, you just download 
> unzip and run.

Thanks Mike and Jeffery,

Right now I'm using the SBLC "Lisp in a Box" package as recommended in 
the book just because it was a click-click install and start but my 
question was more about which flavor than about which implementation. I 
still don't have a clear idea of the difference between "classic" lisp, 
Common Lisp, scheme, etc.

Please see my answer to codik
0
devegades (17)
5/1/2006 7:39:00 AM
En/na codyk........@gmail.com ha escrit:
> Toni wrote:
>> A bit more reading in this ng seems to suggest that Common Lisp is not a
>> good choice, so I'd like to have some more opinions before spending to
>> much time learning the wrong stuff.
> 
> It seems that you are asking whether to learn Common Lisp, as opposed
> to scheme, emacs lisp, dylan . . .?  Given that you like Practical
> Common Lisp, dislike the list-heavy school of lisp programming, and
> have perl experience (another ugly-but-powerful language), that seems
> to suggest that common lisp IS a good choice.

This is precisely my doubt. I don't really dislike the list-heavy school 
of lisp programming as you call it, I think I was simple not able to 
understand it's potential until I read the "Practical Common Lisp" book. 
In fact, by the books I had tried to read in the past I thought lisp 
could not even manage strings and could only work with symbols and numbers!

I really like learning how things work so I wouldn't mind beginning 
small and working my way up. As an example I learned C++' STL by writing 
my own implementation. Not to say that it was a specially good 
implementation, just that it is how I like learning. I did the same with 
Prolog, I built my Prolog engine in Perl so that I could run the Prolog 
examples I was given.

Right now I'm fascinated with lisp-in-awk but whenever I try some Common 
Lisp example it is simply undoable -defun? undefined function: defun!-. 
This is where I begin to see a big difference between Common Lisp and 
("classic"?) lisp. I wouldn't mind writing my own lisp interpreter 
(surely slow, inefficient and buggy) but to avoid repeating past 
mistakes I'd like to have a "forest" picture before going for the 
"trees", that's why I'd like to learn some lisp before.

> If you're actually asking about what implementation of common lisp to
> choose, the similarities outweight the differences.  Use sbcl + slime +
> emacs if you don't mind a little bit of work setting up your own tools,
> and lispworks otherwise.

As I was saying in another answer this is what I'm using right now just 
because it is a click-click install.

--
Toni
0
devegades (17)
5/1/2006 8:19:34 AM
En/na Pascal Bourguignon ha escrit:
> Toni <devegades@gmail.com> writes:
> 
>> I'd like to learn lisp but I'm confused with the many variants I'm finding.
>>
>> What would you recommend for an experienced programmer in other
>> languages (mainly C and perl), wanting to learn lisp?
>>
>> Should be a well documented lisp and working in Mac OS and main UNIXes
>> (Solaris, HP-UX, AIX, ...)
> 
> I think clisp is the best documented of the free lisps, and it works
> on main UNIXes including MacOSX.  Unfortunately, I don't think it
> would work on MacOS.  At least recent versions.  Perhaps some older
> version of clisp worked on MacOS, after all clisp worked on Amiga...

Hi Pascal,

I've been trying to compile clisp in OS X and, effectively it seems not 
to support it. Behind not following the standard configure + make + make 
install sequence it gets to a point which seems to be 
processor-dependent and ppc is not among the options.

I guess I'll stick with SBLC right now and defer my decision to when I 
have some more lisp experience.

Thanks,

--
Toni
0
devegades (17)
5/1/2006 9:13:00 AM
Toni <devegades@gmail.com> writes:

> En/na codyk........@gmail.com ha escrit:
>> Toni wrote:
>>> A bit more reading in this ng seems to suggest that Common Lisp is not a
>>> good choice, so I'd like to have some more opinions before spending to
>>> much time learning the wrong stuff.
>> It seems that you are asking whether to learn Common Lisp, as
>> opposed
>> to scheme, emacs lisp, dylan . . .?  Given that you like Practical
>> Common Lisp, dislike the list-heavy school of lisp programming, and
>> have perl experience (another ugly-but-powerful language), that seems
>> to suggest that common lisp IS a good choice.
>
> This is precisely my doubt. I don't really dislike the list-heavy
> school of lisp programming as you call it, I think I was simple not
> able to understand it's potential until I read the "Practical Common
> Lisp" book. In fact, by the books I had tried to read in the past I
> thought lisp could not even manage strings and could only work with
> symbols and numbers!

<HISTORY>

Even in LISP 1.5, you could manage strings.  Only strings, characters
and symbols were basically the same thing.  Also, the funny thing is
that inside the LISP 1.5, symbol names were stored as _lists_ of
6-character words.  

Anyways, there was some primitive functions to access to the
characters of a string (ie. symbol name).

These functions manipulate an internal buffer BOFFO.
(PACK ch)    append a character to the BOFFO.
(CLEARBUFF)  empties the BOFFO.
(MKNAM)      builds a "string" from the characters in the BOFFO.
(NUMOB)      builds a number from  the characters in the BOFFO.

(UNPACK x)   returns a list of characters contained in the word x.
(INTERN pname)  interns a new symbol.

http://community.computerhistory.org/scc/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf
See page 86.
http://www.informatimago.com/develop/lisp/lisp15-0.0.tar.gz

Apparently, you could retrieve the "name" of a symbol with:
(CAR (GET symbol (QUOTE PNAME)))

;; and:
(MAPCON (LAMBDA (WL) (UNPACK (CAR WL))) (CAR (GET symbol (QUOTE PNAME))))
;; could be used to retrieve a list of all the characters in a symbol.

So you could build a distinct string type and any string function
using these "primitives".

</HISTORY>


> I really like learning how things work so I wouldn't mind beginning
> small and working my way up.  [...]

"Lisp In Small Pieces" is probably for you.
http://www-spi.lip6.fr/~queinnec/WWW/LiSP.html
http://www.amazon.com/exec/obidos/tg/detail/-/0521545668?v=glance

-- 
__Pascal Bourguignon__                     http://www.informatimago.com/

HEALTH WARNING: Care should be taken when lifting this product,
since its mass, and thus its weight, is dependent on its velocity
relative to the user.
0
pjb (7869)
5/1/2006 9:17:18 AM
Pascal Bourguignon <pjb@informatimago.com> writes:

> and symbols were basically the same thing.  Also, the funny thing is
> that inside the LISP 1.5, symbol names were stored as _lists_ of
> 6-character words.  

Well, it was called LISt Processing for a reason :)


Paolo
-- 
Why Lisp? http://wiki.alu.org/RtL%20Highlight%20Film
The Common Lisp Directory: http://www.cl-user.net
0
amoroso (852)
5/1/2006 9:25:27 AM
Toni <devegades@gmail.com> writes:

> En/na Pascal Bourguignon ha escrit:
>> Toni <devegades@gmail.com> writes:
>> 
>>> I'd like to learn lisp but I'm confused with the many variants I'm finding.
>>>
>>> What would you recommend for an experienced programmer in other
>>> languages (mainly C and perl), wanting to learn lisp?
>>>
>>> Should be a well documented lisp and working in Mac OS and main UNIXes
>>> (Solaris, HP-UX, AIX, ...)
>> I think clisp is the best documented of the free lisps, and it works
>> on main UNIXes including MacOSX.  Unfortunately, I don't think it
>> would work on MacOS.  At least recent versions.  Perhaps some older
>> version of clisp worked on MacOS, after all clisp worked on Amiga...
>
> Hi Pascal,
>
> I've been trying to compile clisp in OS X and, effectively it seems
> not to support it. Behind not following the standard configure + make
> + make install sequence it gets to a point which seems to be
> processor-dependent and ppc is not among the options.

Oh no, you misunderstood me.  Current clisp won't work on MacOS, but
it works perfectly well on MacOSX.  Remember that MacOSX is a plain
UNIX system.  I routinely use this script to compile clisp-2.38 on
MacOSX:

#!/bin/bash
version=$(awk -F= '/PACKAGE_VERSION=/{print substr($2,2,index($2," ")-2);}' ./src/configure)
rm -rf /tmp/clisp-${version}-build/
time ./configure \
     --prefix=/usr/local/languages/clisp-${version} \
     $(for m in \
           clx/new-clx \
           rawsock \
           regexp \
           syscalls \
        ; do \
        if expr "$m" : 'i18n\|regexp\|syscalls' >/dev/null;\
        then true already there ;\
        else echo -n "--with-module=$m  " ;\
        fi ; done) \
     --build /tmp/clisp-${version}-build \
     --install



[pjb@thalassa pjb]$ ssh pascal@ABayonne
Last login: Mon Apr 24 06:13:52 2006 from 62.93.174.79
Welcome to Darwin!
tset: can't initialize terminal type emacs (error -1)
Terminal type? emacs
tset: can't initialize terminal type emacs (error -1)
Terminal type? xterm
guardacasa:~ pascal$ clisp 
clisp 
  i i i i i i i       ooooo    o        ooooooo   ooooo   ooooo
  I I I I I I I      8     8   8           8     8     o  8    8
  I  \ `+' /  I      8         8           8     8        8    8
   \  `-+-'  /       8         8           8      ooooo   8oooo
    `-__|__-'        8         8           8           8  8
        |            8     o   8           8     o     8  8
  ------+------       ooooo    8oooooo  ooo8ooo   ooooo   8

Copyright (c) Bruno Haible, Michael Stoll 1992, 1993
Copyright (c) Bruno Haible, Marcus Daniels 1994-1997
Copyright (c) Bruno Haible, Pierpaolo Bernardi, Sam Steingold 1998
Copyright (c) Bruno Haible, Sam Steingold 1999-2000
Copyright (c) Sam Steingold, Bruno Haible 2001-2005

[1]> *features*
*features*
(:REGEXP :SYSCALLS :I18N :LOOP :COMPILER :CLOS :MOP :CLISP :ANSI-CL
 :COMMON-LISP :LISP=CL :INTERPRETER :SOCKETS :GENERIC-STREAMS
 :LOGICAL-PATHNAMES :SCREEN :FFI :UNICODE :BASE-CHAR=CHARACTER :UNIX :MACOS)
[2]> (ext:shell "hostinfo")
(ext:shell "hostinfo")
Mach kernel version:
         Darwin Kernel Version 7.9.0:
Wed Mar 30 20:11:17 PST 2005; root:xnu/xnu-517.12.7.obj~1/RELEASE_PPC


Kernel configured for a single processor only.
1 processor is physically available.
Processor type: ppc7450 (PowerPC 7450)
Processor active: 0
Primary memory available: 384.00 megabytes.
Default processor set: 54 tasks, 110 threads, 1 processors
Load average: 0.00, Mach factor: 0.99
38
[3]> (quit)
(quit)
Bye.
guardacasa:~ pascal$ 

-- 
__Pascal Bourguignon__                     http://www.informatimago.com/

"Specifications are for the weak and timid!"
0
pjb (7869)
5/1/2006 9:31:18 AM
> A bit more reading in this ng seems to suggest that Common Lisp is not a
> good choice, so I'd like to have some more opinions before spending to
> much time learning the wrong stuff.

good heavens!! :-o
Reading THIS ng seems to suggest CL is not a good choice?????

oh well, don't blame ya .......

Is there any way to put Erik Naggum's "What I want from my Common Lisp
vendor and the Common Lisp community" permanently in google's groups
front page for c.l.l. ?

0
johendak (18)
5/1/2006 3:05:28 PM
Toni wrote:
> I wouldn't mind writing my own lisp interpreter
> (surely slow, inefficient and buggy)

If that's the case, and you have either $70usd to spare or a good
library, find a copy of the book "Lisp in Small Pieces" and get hacking
:)

0
5/1/2006 4:20:42 PM
Reply: