Yes, but it is still Lisp
I'll give you a quick overview for the original question.
Lisp data structures (with a very small number of counter-examples) look like (operator argument1 argument2). Operators come in two basic forms, function calls and macros. A function call just calls the function named operator with the appropriate arguments and does something. A macro takes the arguments, and returns some data structure which is evaluated in turn. That data structure will again look like (operator argument1 argument2) although after the rewrite you generally have a different operator and different arguments.
Normally within parentheses each word is a different symbol, case insensitive. So operator actually might be OPERATOR internally, and will be printed that way if you ask the interpreter to print it. Double-quotes give you quoted strings, from which you can generate normal text like "Hello".
And in one of the few pieces of syntactic sugar in Lisp, 'foo
is rewritten by the interpreter to mean (quote foo). Which gives you back the symbol foo directly, which is appropriate for passing into or out of functions and macros.
You are beginning to undersand Lisp when it is obvious to you when you can't write foo instead of 'foo (or long-hand, (quote foo)) because Lisp will immediately interpret foo as an operator and try to call it as a macro or a function immediately, rather than inserting it into the data structure that you are trying to return.
Cheers,
Ben
"good ideas and bad code build communities, the other three combinations do not"
- [link|http://archives.real-time.com/pipermail/cocoon-devel/2000-October/003023.html|Stefano Mazzocchi]