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?
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.
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.
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...
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.
12 comments
[ 4.4 ms ] story [ 37.6 ms ] threadWhile 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)
If you're interested in scheme, bigloo is an option; there are surely others.
http://en.wikipedia.org/wiki/Category:Scheme_compilers has a list of Scheme compilers, if you're into that side of things.
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
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.