This is a late reply, but just wanted to add one remark that you might find handy later on:
Common Lisp is actually case-sensitive at its core. However, when you write a piece of code and then tell the lisp reader to read that piece of code, it upcases all the symbol names it encounters. For instance:
Code: Select all
(eq 'mystring (intern "MYSTRING"))
-> t
(eq 'mystring (intern "mystring"))
-> nil
In the first case, the reader reads 'mystring, interns a symbol named MYSTRING (with all upper-case) into the current package and reads on. When evaluating the intern function adds a symbol with name MYSTRING (again all upper-case) to the current package (but this already exists, so it simply returns the existing symbol) and the two end up being equal according to eq.
In the second case, however, intern actually does intern a new symbol with name mystring (all lowercase) into the current package, which is found to be unequal to the previously defined 'mystring symbol which is all uppercase.
So the point is, Lisp is case-sensitive, but the reader smooths out most case issues for you, but it is good to be aware of when working with certain functions, for instance 'intern'