

Ask YC: Lisp Compiler - Novash

I know Lisp is interpreted (and this is one of its greatest advantages with its eval loop and all it brings), but is there any tool to compile Lisp code? Or to translate it into C++ code to be compiled with a C++ compiler?
======
brlewis
You're confusing "interpreted" and "interactive." A read-eval-print loop can
work by compiling the expressions you type in and executing the compiled code.

------
maw
What you know is wrong. Some lisps are interpreted, some are compiled. SBCL is
one of the compiled ones.

If you're interested in scheme, bigloo is an option; there are surely others.

------
gibsonf1
Hmm, part of the magic of Lisp comes from compiling the macros. Both Lispworks
and SBCL compile Lisp code, and I think SBCL effectively only operates in
compiled mode and is _very_ fast. I would guess that most other Lisps compile
as well. Being compiled is why Lisp clocks in at speeds roughly the same as C
or faster in many cases.

~~~
dpapathanasiou
_Being compiled is why Lisp clocks in at speeds roughly the same as C or
faster in many cases._

While we're on that subject, take a look at "How to make Lisp go faster than
C" (<http://www.lrde.epita.fr/~didier/research/verna.06.imecs.pdf>)

------
mnemonicsloth
Many (most?) Schemes are compiled.

Chicken Scheme (my favorite) is 'just' an efficient Scheme-to-C compiler, with
some optimizations for the "interpreter".

Also, there's Stalin, which is one of the most powerful compilers around, in
any language. Wikipedia claims that it usually outperforms hand-coded C (which
isn't that hard, since C does arrays with pointers and nothing else),
sometimes by a lot.

There's also Bigloo (which is French and unknown to me), and Gambit, and a
whole bunch of Scheme-to-Java compilers as well.

Also, I know Scheme48 and PLT Scheme both have compilers, but I don't know
much about them. Chicken is _so_ much more hackable.

<http://callcc.org>

~~~
apgwoz
Scheme48 doesn't have a traditional compiler, but does allow you to create
bytecode images, that will run in the virtual machine.

------
apgwoz
Isn't a compiler a required part according to the Common Lisp spec? I'm more
of a Scheme guy, so I don't know all 500 pages of the CL doctrine, but I think
I remember that...

<http://en.wikipedia.org/wiki/Category:Scheme_compilers> has a list of Scheme
compilers, if you're into that side of things.

------
watmough
Clojure is a Lisp that compiles to JVM byte-code as you type in to a REPL, or
load-file.

Clojure is oriented towards functional style programming and concurrency.

Compiled code uses some reflection under the covers, but most of this can be
eliminated by type hinting, which gets you into the ball park with Java.

------
dpapathanasiou
CMUCL and CLISP both come with compilers; CLISP also has an option to build
native executables in addition to bytecode.

------
tjr
LispWorks can build executables.

~~~
Emmjaykay
Like, kernels?

------
lst
Look at ECL (<http://ecls.sourceforge.net/>), it compiles to C and can be
embedded.

