Search code examples
lispcommon-lispbackticks

What does backtick mean in LISP?


I have this macro, which rewrites define. If I remove the " ` " backtick it won't work. What is the explanation?

(defmacro define ((name &rest r) body) 
  `(defun ,name ,r ,body))

Solution

  • A single quote followed by the written representation of a value will produce that value:

    Example: '(1 x "foo") will produce a value that prints as (1 x "foo").

    Suppose now that I don't want a literal symbol x in the list. I have a variable x in my program, and I want to insert the value to which x is bound.

    To mark that I want the value of x rather than the symbol x, I insert a comma before x:

    '(1 ,x "foo")
    

    It won't work as-is though - I now get a value that has a literal comma as well as a symbol x. The problem is that quote does not know about the comma convention.

    Backtick or backquote knows about the comma-convention, so that will give the correct result:

    > `(1 ,x "foo")
    (1 3 "foo")          ; if the value of x is 3
    

    Read more here: http://www.lispworks.com/documentation/HyperSpec/Body/02_df.htm