2 Answers
2

In lisps, ' (like quote) quotes its arguments, i.e. preserves them pretty much exactly as written in their s-exp form, including not evaluating anything within.

To put it another way '(foo bar zip) creates a list containing the symbols foo, bar, zip; while (list foo bar zip) creates a list containing the values of foo, bar, zip. In the first case, str will be converting the symbols themselves to strings and then concatenating them.

@Jonathan In my experience, most of the time it is more convenient to use a vector rather than a quoted list. Aside from requiring less keystrokes, a vector is more easily distinguishable as an unevaluated list than a quoted list.
–
user100464Apr 24 '12 at 15:20

Could you also comment on the empty cases, '() and (list)? Is there any difference between them?
–
LiiMay 31 '14 at 10:37

The difference is that, as you can see, the literal syntax '() is quoted. This means symbols inside are not evaluated. To use list literals while evaluating the elements you can exploit the syntax-quote reader macro: