CIS 554 Basic Clojure Functions
Fall 2013, David Matuszek

Special atoms are `true` and `false` (the result of a test), and `nil` (meaning "no answer"). `nil` is not the empty list, but satisfies `(empty? nil) `and acts like the empty list in some functions.

• `(quote sexpr)` prevents evaluation of `sexpr`. Syntactic sugar for this:` 'sexpr`.
• `(first list)` returns the first element of `list`, or `nil` if the `list` is empty.
• `(rest list)` returns the list that remains when the first element is removed, or `nil` if the `list` is empty.
• `(second list)` returns the second element of `list`, or `nil` if the `list` has fewer than two elements.
• .`(cons sexpr list) `returns a list with `sexpr` added as the new first element.
• `(empty? list) `tests whether `list` is the empty list, or is `nil`. Returns `true` or `false`.
• `(= arg1 arg2 ...) `tests whether any number of arguments are equal. Returns `true` or `false`.
• `(nil? sexpr) `tests whether `sexpr` is `nil`. Returns `true` or `false`.
• `(list? sexpr) `tests whether `sexpr` is a list. Returns `true` or `false`.
• `(count list) `returns the number of top-level elements in `list`
• `(list sexpr1 sexpr2 ... sexprN) `returns a list of its arguments.
• `(concat list1 list2 ... listN) `returns a list of the elements in all of its arguments.
• `(eval sexpr) `returns the result of evaluating its argument.
In general, `(eval (quote (f args))) `is equivalent to` (f args)`.