Generally we don't want lisp code to appear in TAL templates, however there are two exceptions to this rule:
- tags or attributes which operate on values taken from the environment (eg: the content and dolist attributes discussed below) are passed regular lisp code (expressed as text and then converted to lisp via READ-FROM-STRING).
- Inside other HTML attributes where we would like to substitute the value of some lisp code inside the textual value of the attribute.
When a lisp expression is expected as the value of a TAL attribute the '$' read macro can be used to access values in current TAL environment.
When a string value is expected for an HTML attribute the syntax "${...}" can be used to evaluate a lisp form and substitute the result into the contain attribute value. The \"@{...}\" syntax differs from the "${...}\" syntax in that the form is expected to return a list and every element of that list is embedded in the enclosing attribute. Inside the lisp forms the \"$\" read macro is available as with regular lisp only attributes.