All of the sequence functions and special forms work on all of the sequence types.
The "redundancy" is that there are also functions/forms that work on specific sequence types. It would be surprising if there weren't because if two data types have exactly the same set of operations, one of them may be unnecessary.
I'm not sure if you're joking. It has always been the case that you could run Lisp on stock hardware. Lisp machines were just an optimization for back in the day when hardware was slow and Lisp compilation techniques weren't well-known.
iPhone, iPhone, iPhone. If you know OOP and C (that's regular C), you can pick up Objective-C in a matter of hours. If you don't know C already, you'll have to learn it anyway as part of C++.
C++ is not generally a language people ought to learn unless they have to.
Today, I just finished a book called "Pointers on C" by Kenneth Reek. I read it to come up to speed on pointers and now feel comfortable with that. That's why I posted today, I am now at the fork in the road...
Someone should do Paul Graham, so he can write a new lisp dialect to write another program to evolve another version of Paul Graham to write a new lisp dialect to write another program to evolve another version of Paul Graham to write a new lisp dialect to write another program to evolve another version of Paul Graham to write a new lisp dialect to...
Honestly, the JVM is pretty crappy right now for functional language support. A lot of stuff has to be implemented by hand in either the compiler or the program itself. Several features in Clojure take the latter track at the moment.
I advocate tracking down people from Sun and asking them in a personable, friendly tone of voice to please fix this kind of problem. On their front lawns.
It's clear from reading Carmack's sentence that he means affect (alter/disturb, in this case negatively so), not the verb form of effect/to cause. (Not that that justifies a grammar flame on HN, but it was at least an accurate flame.)
Clojure is what you'll want to be using if you ever start doing "real programming" in a useful, expressive Lisp. Don't start with it, though.
In the following order:
1) Learn Scheme and get through SICP. Wind up with
enough of an appreciation of Scheme that you could
write real programs in it, given enough patience.
2) Attempt to learn Common Lisp.
3) Become frustrated and give up on Common Lisp.
4) Learn Clojure instead, and become overjoyed at the
real work you can get done.
I'm mostly joking about steps 2 and 3. They're based on my own experience with CL (and Elisp) and might not apply to you. Going from Scheme to Clojure will be a bit of a shock, though, because the former is absolutely as sparse as possible with lexical punctuation, and the latter is totally littered with it (particularly stuff that's borrowed from Perl and Ruby). If you've written enough Perl, though, you might not care.
By the way: Scheme is Latin, and CL is Ancient Greek. ;)