While I've seen various success stories about Lisp floating around the internet, each time someone comes and asks about this, I find it stupid. Someone should judge a language by the actual qualities of the language, not by how popular or by how many commercial successes there have been using it. What are you? A manager? Just learn and use the damn language and find out what it can do for you, instead of wasting time reading stories off the internet.
As a small continuation to my last post. I've just written a program in about 10 minutes, worth about 25 lines of code, while last time I implemented something like that I used C for it and it took some 4 hours and some 350 lines of code. I find that enough reason to use it for my projects that aren't terribly low-level.
>>22
The program made use of CL's extensive list functions, such as: MAPLIST PUSH CONS FIRST/REST/CAR/CDR/CDAR SORT SET-DIFFERENCE REMOVE NREVERSE and some others, to implement a simple grpah manipulation algorithm. The C version had done the same things, but in an ad-hoc manner, leading to a lot of code duplication. I'm sure I could have factored away most of the similar code patterns, had I known Lisp before I wrote the C version, but alas that was a long time ago. Here's a sample of one of the functions used by it:
(defun seq (n m)
(loop for i from n to m collect i))
The C program did something similar among other things it did, but it wasn't solving the same thing as this Lisp one, however it was similar.
Name:
Anonymous2009-10-29 8:25
Metacircular evalutation means you can have LISP in LISP. LISP is both every program and no program at all. That is noteworthy.
Name:
Anonymous2009-10-29 8:38
eval evaluation means you can have Perl in Perl. Perl is both every program and no program at all. That is noteworthy.
Name:
Anonymous2009-10-29 9:10
exec execution means you can have C in C. C is both every program and no program at all. That is noteworthy.
Name:
Anonymous2009-10-29 9:21
[code]sex[code] means you can have human in human. Human is both every being and no being at all. That is noteworthy.
Name:
Haxus the BBCoder2009-10-29 9:31
BBCode means you can have BBCodes in BBCodes. BBCode is both every tag and no tag at all. That is noteworthy.
Name:
Anonymous2009-10-29 10:35
Half of emacs.
The rest is the elisp interpreter, I suppose.
Name:
Anonymous2009-10-29 11:17
>>15 Spoiler: some parts of that were written initially in Lisp, and then later it was reimplemented in Java.
Is this really true? When I posted it to /prog/ (the rewritten in Java part) I just made it up.
>>31
It's part true. They supposedly attempted to reimplement the fine Lisp code using SEPPLES for a while and had trouble, and they eventually ended up reimplementing a Lisp interpreter in SEPPLES. Greenspun's 10th rule and all.
You can't really blame big businesses for doing this, as they just wanted their software written in a language for which they think they could get replaceable programmerscogs easily.
Name:
Anonymous2009-10-29 12:19
>>1 Common Lisp implementations are written in Lisp. As is Macsyma, Maxima, the whole Symbolics Genera operating system, as well as some of Lenat's AIs.
Did a bit of refactoring over the last version, looks a bit better to me, but it's hard to get it reach the Haskell version's terseness without defining a specific DSL.
(defun seq (n m)
(loop for i from n to m collect i))