Structural Informatics Group (SIG) logo
Home | Projects | Demos | Downloads | Publications | Local Info | About Us | New site
Go to the first, previous, next, last section, table of contents.

comma-at

comma-at

type: reader expansion
location: built-in
source file: xlcont.c  and  xlread.c
Common LISP compatible: yes
supported on: all machines

SYNTAX

(comma-at <expr> )
        <expr>          -       an expression which is evaluated within
                                a BACKQUOTEd expression

DESCRIPTION

A BACKQUOTE special form returns an expression unevaluated, except that portions of the expression may be evaluated when they are preceeded by a COMMA (,) or COMMA-AT (,@). COMMA-AT will evaluate the portion of the expression that the comma-at preceeds. The portion needs to be a list. The list is spliced into the expression. If the portion is not a list, COMMA-AT will splice in nothing.

EXAMPLES

(setq box 'stuff-inside)                ; BOX contains STUFF-INSIDE
(print box)                             ; prints STUFF-INSIDE
(quote (i have the box))                ; returns (I HAVE THE BOX)
(backquote (i have the box))            ; returns (I HAVE THE BOX)
(backquote (I have (comma box)))        ; returns (I HAVE STUFF-INSIDE)
(backquote (I have the ,@box))         ; returns (I HAVE THE)
(setq automobile '(a van))              ; set up AUTOMOBILE 
(backquote (I have automobile))         ; returns (I HAVE AUTOMOBILE)
(backquote (I have (comma automobile))) ; returns (I HAVE (A VAN))
(backquote (I have ,@automobile))      ; returns (I HAVE A VAN)
`(I have ,@automobile)                 ; returns (I HAVE A VAN)

READ MACRO: XLISP supports the normal read macro of a comma (,@) as a short-hand method of writing the COMMA-AT read-expansion.

NOTE: BACKQUOTE and COMMA and COMMA-AT are very useful in defining macros via DEFMACRO.


Go to the first, previous, next, last section, table of contents.