Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon.

Pages: 1-

Your favorite Common LISP

Name: Anonymous 2010-04-28 18:58

Which is your favorite Common LISP and why?

Mine is Clozure CL because it combines fast native code generation with very small overall footprint. The only downside I can see is that it was originally developed for Macs but I don't mind.

Name: Anonymous 2010-04-28 19:05

S.B.C.L. is a superior L.I.S.P., particularly because it doesn't really support Windows.

Name: Anonymous 2010-04-28 19:13

Allegro, because it's proprietary and expensive as fuck.

Name: Anonymous 2010-04-28 19:30

>>2
But SBCL is a huge memory hog.

Name: Anonymous 2010-04-28 20:19

I'm just beginning to learn Lisp and I've decided to go with GNU CLISP.

Name: Anonymous 2010-04-28 20:22

>>3
Don't be silly, that's a C game programming library.

Name: Anonymous 2010-04-28 21:45

CCL. I just hate the SBCL REPL and setting up ASDF from scratch is FUN.

Name: Anonymous 2010-04-28 23:00

>>7
Don't tell me you use the REPL directly.

Name: Anonymous 2010-04-29 0:28

>>8
It still looks ugly in lisp-mode.

Name: Anonymous 2010-04-29 3:30

>>9
I don't even understand what you're talking about. A SLIME REPL will look the same no matter what Lisp you're using, and so will source files. What else could you possibly be looking at?

Name: Anonymous 2010-04-29 3:34

>>9
LISP always looks ugly.

Name: Anonymous 2010-04-29 3:51

>>1
I prefer SBCL and CCL(Clozure CL), although ECL looks attractive for some things.
>>2
SBCL actually works fine in Windows, I've been using it for quite some time.
>>3
Allegro and LispWorks are useful for those needing native GUIs and support (without the hassle of doing everything yourself). Basically, what commercial vendors always supply.
>>7
Use Emacs/SLIME/Paredit/Redshank and enjoy a consistent and comfortable experience across CL implementations. I can easily switch between them using SLIME, or even run more than one at the same time. As for ASDF. In the SLIME REPL, i just type ,l then press enter, type the system name, enter, and it's the same as doing (asdf:oos 'asdf:load-op '#:system-name)
>>8
Did you try SLIME + contribts?

Name: Anonymous 2010-04-29 4:12

MIT scheme

Name: Anonymous 2010-04-29 6:32

>>10
Vanilla lisp-mode.

Name: Anonymous 2010-04-29 10:23

Scheme > Lisp

Name: Anonymous 2010-04-29 10:39

>>15
itrollu?

Name: Anonymous 2010-04-29 11:48

>>16
utrolli?

Name: Anonymous 2010-04-29 15:20

>>14
Why aren't you using SLIME? Don't you like productivity?

Name: Anonymous 2010-04-29 20:52

SBCL may be a memory hog but it's what everyone develops for so in terms of compatibility with libraries SBCL is the best among all the common LISPs.

Name: Anonymous 2010-04-29 21:58

>>18
No, I don't like productivity

Name: Anonymous 2010-04-30 11:57

>>19
Most of the important libraries are very portable among implementations.

Name: Anonymous 2010-04-30 12:24

>>21
PORT MY ANUS

Name: Anonymous 2010-05-01 3:55

>>21
Somewhat true. Almost all the code I write is ANSI CL compatible. When I have to write code that goes beyond the ANSI standard, I have a few options:
1) If it's some common functionality that is widely available, like FFI, networking, gray streams, the MOP and so on, I use a lightweight library which acts as a compatibility layer. All the library does is unify various implementation's internals under a consistent well-documented API. This way, you can retain compatibility even if you switch implementations. Some of these libraries tend to be de-facto standards.
2) If no such comptibility layer exists, you can write your own. This is done by first deciding on a public API, then you implement each function using each of the implemntation's internals. It could look like:

#+sbcl
(defun some-fun (...) ...)
#+ccl
(defun some-fun (...) ...)
#+clisp
(defun some-fun (...) ...)
#+excl
(defun some-fun (...) ...)
...
#-(or sbcl ccl clisp excl ...)
(defun some-fun (&rest args)
  (declare (ignore args))
  (error "SOME-FUN isn't supported in your implementation"))

I've done such a thing to extend certain functionality beyond ANSI CL(for example, it can be used to do environment access, or implementing a MOP,...), and it's usually not too hard to do it if you have access to the implementations' source code and you use SLIME, which is very helpful when digging in internals.
3)The final option is to write unportable code, but this is usually not the best idea. It can make some sense when the functionality you want is not obtainable anywhere else, and is usually very implementation dependent and low-level. A good example would be SB-HEAPDUMP, which is a SBCL port which allows dumping in-memory objects to disk for persistance (keep in mind that there are many portable persitance libs), and can be used to implement continuations in a more low-level way(continuations can also be done in a portable way using a lib which can perform CPS transforms - there are a few). Other similar examples could be implementation-tuned crypto libs which depend on how an implementation performs optimizations, which tend to be different across lisps.

tl;dr: Most of the Lisp code in the wild is portable ANSI CL, or de-facto portable accross implementations. If you have certain needs for higher than usual performance, you can write unique implementation dependent code which could not be ported to other implementations since it depends on compiler internals way too much.

Name: Anonymous 2010-05-01 10:20

suave lisp yoshi

Don't change these.
Name: Email:
Entire Thread Thread List