That's exactly it. Saying that learning a new language is just a matter of learning a new syntax is like saying that an English-speaking, non-German speaker could translate a German text to English by taking a German-English dictionary and going through and translating the words one-by-one. It's not quite as simple as that.
I've noticed that the most effective way to get a programming project finished is to just let everything else slide for a few weeks: paying bills, exercising, being social. Probably not a very healthy way to live in the long run, though.
Right now I'm in the middle of a study group that I started here at work. We're studying Graham's book "ANSI Common Lisp" and studying inference in particular, so we're also covering some of "Paradigms of Artificial Intelligence Programming".
After that's done, I'm going to either spend some time working on the Netflix Prize (just to learn more, not in a real attempt to win) or doing some music programming in either Lisp, using the Common Music API, or Mathematica.
Eric Raymond is an excellent writer and you can't go wrong reading this article.
Also, learn how to do mathematical proofs. I don't know what the best way to do this is. I learned from 10th-grade Euclidean geometry class. Maybe you can pick up a good book on Euclidean geometry that has a lot of exercises in it.
Finally, pick up a good book on Lisp that has a lot of exercises in it and do all the exercises in it. Winston and Horn is good. "The Little Lisper" is also good.
Actually, I take back my statement that this is not set-theoretic union.
If I'm willing to accept '(a a) as representing the set '(a) when I use it as an input to union, I should be just as willing to accept '(a a b) as representing the set '(a b) when I receive it back from union.
Yes, you're right. The fact that they leave the behavior of union in this case undefined in the standard is surprising to me. The fact that SBCL and GNU CLISP implement it the way they do is just bizarre to me.
I'm not sure, but I think you need to use labels, rather than flet, in this case, since local functions defined using flet cannot be recursive. At least that's how I interpret what it says on page 319.
I guess I'm not understanding the problem then, because I thought we were not supposed to expand into a do, since the problem states:
"Define ntimes (page 167) to expand into a (local) recursive function instead of a do."
Isn't the problem asking you to write this without expanding into a do, or am I missing something here? What would be a correct solution to the problem?
http://www.cs.northwestern.edu/academics/courses/325/program...