87

I am looking for a version of Scheme or even LISP that I can use to recover some lost Lisp development skills. Some web capabilities would be nice but not essential.

I've looked at Plt and MIT scheme and, while both look pretty good, the Plt seems to be more feature rich. I've also looked at Lisp implementations but all of the seem quite expensive.

I favor free/inexpensive implementations as this is truly likely to just be occasional hobby programming. What recommendations would you have?

Nakilon
  • 34,866
  • 14
  • 107
  • 142
Mark Brittingham
  • 28,545
  • 12
  • 80
  • 110

15 Answers15

72

I'd go with Racket. It may not be as fast as SBCL, but it does have excellent libraries and documentation, as well as an integrated environment that's designed to get you developing and running Scheme programs right out of the gate. What I really like about Racket's IDE, DrRacket, is what you don't have to do—you don't have to learn Emacs, you don't have to learn SLIME, you don't have to worry about hunting down third-party libraries, as virtually all libraries meant for Racket can be found in packages. All in all, it really cuts down on the learning curve and allows you to focus on the actual task at hand: writing great code.

Also, it comes with a web server if you want to make Racket-powered websites (which I'm currently looking into).

C. K. Young
  • 219,335
  • 46
  • 382
  • 435
Kyle Cronin
  • 77,653
  • 43
  • 148
  • 164
  • 1
    I've chosen PLT more-or less randomly few weeks ago, and so far I'm very pleased with my choice. As you've said, lots of libraries and documentation, some useful tools. – Slartibartfast Jan 22 '09 at 00:37
  • Thanks, um, nobody. I'm more focused on tools and documentation than speed so I'm going with PLT. – Mark Brittingham Jan 22 '09 at 23:14
  • 1
    Sure thing. DrScheme is created with education in mind, which has some upsides (simple to use and documented) but also has some downsides; unless you're going through HtDP (http://www.htdp.org/) it's best to ignore the teaching languages and use Module for everything. – Kyle Cronin Jan 22 '09 at 23:41
  • In addition to now being named Racket, there is now a new [package system](http://blog.racket-lang.org/2014/12/the-racket-package-system-and-planet.html) and [package catalog](http://pkgs.racket-lang.org/) that is now preferred over Planet for most use cases. – Jack Aug 26 '15 at 03:34
22

I did quite a bit of experimenting with this.

Clozure Common Lisp (née Open MCL) is by far the fastest; 25-30 percent faster than the next competitor on my intel Mac Mini.

MIT Scheme works quite nicely on a Mac. I think I eventually compiled it myself, but there are binaries at that site. PLT Scheme is also nice, and possibly a little better integrated into the Mac world. (PLT Scheme is now known as Racket, but I haven't experimented with it after the change.)

Charlie Martin
  • 110,348
  • 25
  • 193
  • 263
16

I'm a huge fan of Clojure, SBCL, and Clozure CL. They are all fantastic, but they are also overkill if all you want to do is refresh your Lisping chops. They all require absurd amounts of info hunting, mailing list searching, package installing, irc lurking, etc.

Dr Scheme just installs and runs. I finished the first 3 chapters of SICP four and half years ago using Dr Scheme. Nothing was more profound than defining a Scheme evaluator in itself. Once you get your head around that you'll have a lot more patience for the industrial strength brethren.

dnolen
  • 18,496
  • 4
  • 62
  • 71
  • 3
    Actually I didn't need anything else for my Ubuntu-SBCL-SLIME-stumpwm setup. For starters, Practical Common Lisp and the CLHS is all you need, and that brings you a long way. – Svante Jan 22 '09 at 23:39
16

For Scheme, DrRacket is awesome (included in Racket).

For Common Lisp, Ready Lisp is great. A single dmg with SBCL, Aquamacs and Slime working out of the box.

From the Web site:

Ready Lisp is a binding together of several popular Common Lisp packages especially for Mac OS X, including: Aquamacs, SBCL and SLIME. Once downloaded, you’ll have a single application bundle which you can double-click — and find yourself in a fully configured Common Lisp REPL.

It’s ideal for OS X users who want to try out the beauty of Common Lisp with a minimum of hassle. It could also be used by teachers to give their Mac students a free, complete Common Lisp environment to take home with them. Requirements

The current version of Ready Lisp is 20090127 and requires Mac OS X 10.5 (Leopard).

It includes the following component software versions:

Aquamacs  1.6
SBCL    1.0.24
SLIME   2009-01-23
CL-FAD  0.6.2
CL-PPCRE    2.0.1
LOCAL-TIME  0.9.3
SERIES  2.2.10
CL HyperSpec    7.0
paredit.el  20
redshank.el     1
cldoc.el    1.16
Jason Sperske
  • 29,816
  • 8
  • 73
  • 124
Sébastien RoccaSerra
  • 16,731
  • 8
  • 50
  • 54
5

I've just started playing with Clojure. It apparently has a nice web framework, and compiles to JVM bytecode.

I also use DrScheme quite a lot. It's a simple yet useful IDE.

Matthew Schinckel
  • 35,041
  • 6
  • 86
  • 121
5

Depending how you define "Lisp", Clojure may fit the bill. It runs on OS X fine (it runs anywhere the JVM runs). It has web capabilities and it's free.

It also has the benefit of being new and fresh and fun to use. Might be ideal for hobby programming. It's easy to write web apps or GUI apps (using Java's Swing or even Qt).

Brian Carper
  • 71,150
  • 28
  • 166
  • 168
4

I do recommend Racket to new-comers, since it provides one of the nicest IDE's for Scheme beginners (or rather, programming beginners who happen to be using Scheme, or better still, working their way through HtDP).

http://racket-lang.org/

Another option, for people who are more interested in a small Scheme system in order to modify it themselves or read its source code, is Larceny Scheme, which is of interest largely because its JIT compiler, Twobit, is itself implemented entirely in Scheme.

http://www.larcenists.org/


Update: In addition, Chez Scheme has recently been open sourced:

https://github.com/cisco/ChezScheme

(It may not be as "small" as Larceny, but it has a very aggressive optimizing compiler.)

pnkfelix
  • 3,770
  • 29
  • 45
  • on the web site, they only seem to mention a native compiler, a to-C compiler, and a CLR implementation—where's the JIT one? – Erik Kaplun Feb 18 '14 at 15:31
  • The native compiler *is* a JIT. – pnkfelix Feb 19 '14 at 00:49
  • (that is, it dynamically compiles every Scheme expression you feed it via ‘load‘ or the REPL into x86 machine code. JIT here is for "just in time"; it is unrelated to Java and the JVM, in case that is what you thought I meant by JIT) – pnkfelix Feb 19 '14 at 00:52
  • I did not think it's got anything to do with Java; it's just that the home page says *"compiles directly to native machine code"*, and that's not how JIT-compiling VMs/interpreters are usually described. – Erik Kaplun Feb 19 '14 at 01:22
  • Well, Larceny is not like many other JIT-compiling VM's, so the comparison may be less useful than I had hoped. E.g. many VM's use a hybrid interpreter/JIT, isolating compilation solely to code identified as "hot" during interpretation. Native Larceny is much more simple-minded, which has pro's and con's. Its compiler is fast enough that I rarely noticed it. Also, Native Larceny does offer serialization of compiled code to a "fast-load" (.fasl) file, which may be a closer match to what you expected (and helped in the exceptional cases where compilation time was a problem). – pnkfelix Feb 19 '14 at 13:39
  • Still not clear why the home page says "compiles directly to native machine code" :P can I get a binary directly from my Scheme source and execute that binary without any runtime dependency on the Scheme system that produced the binary? – Erik Kaplun Feb 19 '14 at 13:40
  • I have no control over the language Will Clinger chose to use for larcenists.org – pnkfelix Feb 19 '14 at 13:40
  • 1
    To answer your question, you can't really get a standalone binary from Larceny as it stands right now. You can load up your Scheme source and then serialize its heap (with compiled code) to a heap image, but even then you'd still have to re-distribute the heap file and the runtime binary as separate files. I've considered trying to make it easier to merge the two into a single binary image, but never took the plunge. – pnkfelix Feb 19 '14 at 13:43
4

I haven't used it myself, but Steel Bank Common Lisp has received some favourable buzz over at reddit. It's open source and free so the price is right for some hobby programming.

In the past, I've had GNU Common Lisp running on my macbook pro.

Dana
  • 32,083
  • 17
  • 62
  • 73
4

If you are looking for Scheme you can take a look at just released JazzScheme.

Marko
  • 30,263
  • 18
  • 74
  • 108
3

If you're just hobby programming, LispWorks has a free, personal version which is quite powerful and sophisticated. It's biggest issue is a run time limit of several hours. So, you won't be writing any long running servers in it, but that doesn't mean it's not a useful tool.

CLISP runs on most everything, and is quite nice actually, it just doesn't do threads. (Important if you want to write an actual server, but as PHP and Perl have shown us, Apache + [insert language] is a very viable platform.)

Will Hartung
  • 115,893
  • 19
  • 128
  • 203
3

You might want to look at what's at the Association of Lisp Users or the Common Lisp Wiki to see what's there. I set myself up with Steel Bank Common Lisp and Emacs, but have done little with it so far.

David Thornley
  • 56,304
  • 9
  • 91
  • 158
2

Clozure CL is available for free from the mac store!

http://itunes.apple.com/us/app/clozure-cl/id489900618

Rimian
  • 36,864
  • 16
  • 117
  • 117
2

I have found that Chicken works well for Scheme and is available through homebrew.

brew install chicken

Most of the code from SICP works with minor modifications.

Justin Meiners
  • 10,754
  • 6
  • 50
  • 92
1

Go with Racket. I'm very happy with it!

Jaro
  • 3,799
  • 5
  • 31
  • 47
1

I've been asking myself the same question lately. Having used DrScheme on OS X it would be my first choice of Scheme distribution for any platform. Very nice IDE, debugging features and a good set of libraries/frameworks (including a very nice GUI toolkit that 'just works... even on Mac' ;-) )

However, I'm now looking for a similarly comfortable environment for Common Lisp. It came down to CCL (OpenMCL) versus SBCL. SBCL seems to be the popular choice but I read that on OS X is doesn't support threading. (Is this really an issue?). Clozure CL, on the other hand, boasts good support for native threads, the obcj-bridge, etc...

I'm finding CCL a little odd but I'm going to stick at it for a while - It still looks like the logical choice for integration.

I use Emacs 23 (built from source using --with-ns) and Slime as an environment and this works well for me. :-)