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

Scheme or Common Lisp?

Name: Anonymous 2010-07-22 9:02

Yes, it's a “which programming language to leran ???” thread, but this time it's ...more specific I guess?

So I already know C and Perl and wish to acquaint myself with other paradigms than the procedural and object-oriented ones I've become uncomfortably familiar with (i.e., functional). I also intend to learn Haskell at some point in the future in order to complete the holy trinity of syntaxes.

So, /anus/. Regarding the thread title, what are the differences that you find make you prefer one Lisp dialect to another? Is there even much of a difference? Or did you just choose one as your way of saying, “I've read SICP”?

Name: Anonymous 2010-07-22 20:37

>>31
You can shadow a form. It does not mean it requires a full code walker. Besides, assuming you choose to use the full code walker approach, why would that be a huge issue? People have used code walkers in CL for a long time (some implementations even have support for them natively): they're used in CLOS and MOP, macroexpand-all, continuations via CPS and some other libraries. Some people don't even realize when code walkers are used. I'd also argue that it's not really a whole new language, as if it was a truly new language, you'd have different forms/special operators/macros... It's just extending the language. I'm not going to argue about this that much, as this depends on one's viewpoint, some people consider any of these as making a new language(examples):
1) creating new functions
2) creating new macros
3) shadowing symbols (packages)
4) defining symbol macros
and so on. It's perfectly possible to implement new languages using only portable means, but where does one draw the line?

I don't really care. Maybe one could draw the line at what can be done portably, or maybe one could draw the line when one has to implement their own compiler or interpreter. But then, what is the definition of a compiler? A macro itself is a piece of a compiler. Should the definition be limited to a full-fledged compiler only? However, a full-fledged compiler can still be done using only portable functions and macros...

tl;dr: I don't know where to draw this line, nor do I care about drawing it.

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