The defmacro-enhance Reference Manual

Table of Contents

Next: , Previous: , Up: (dir)   [Contents][Index]

The defmacro-enhance Reference Manual

This is the defmacro-enhance Reference Manual, version 0.5, generated automatically by Declt version 2.3 "Robert April" on Tue Feb 20 08:33:30 2018 GMT+0.


Next: , Previous: , Up: Top   [Contents][Index]

1 Introduction

defmacro-enhance

Enhancement of defmacro in spirit of let-over-lambda.

Following features are supported:

  1. g!-symbols in body of a macro become gensyms:

    CL-USER> (defmacro! foo (bar)
              `(let ((,g!-bar ,bar))
                 asdf))
    FOO
    CL-USER> (macroexpand-1 '(foo (+ 1 2)))
    (LET ()
      (LET ((#:BAR1115 (+ 1 2)))
        ASDF))
    T
    CL-USER>
    
  2. o!-symbols in the lambda-list of a macro become once-only arguments

    CL-USER> (defmacro! square (o!-x)
               `(* ,o!-x ,o!-x))
    SQUARE
    CL-USER> (defparameter a 1)
    A
    CL-USER> (square (incf a))
    4
    CL-USER> (square (incf a))
    9
    CL-USER>
    
  3. e!-symbols in the body of the macro are interned in the package, where macro is expanded, not where it is defined

    CL-USER> (in-package defmacro-enhance)
    #<PACKAGE "DEFMACRO-ENHANCE">
    DEFMACRO-ENHANCE> (defmacro! aif (test then &optional else)
                        `(let ((,e!-it ,test))
                           (if ,e!-it
                               ,then
                               ,@(if else `(,else)))))
    AIF
    DEFMACRO-ENHANCE> (in-package cl-user)
    #<PACKAGE "COMMON-LISP-USER">
    CL-USER> (macroexpand-1 '(defmacro-enhance::aif (+ 1 2) it 6))
    (LET ()
      (LET ((IT (+ 1 2)))
        (IF IT
            IT
            6)))
    T
    CL-USER> (defmacro-enhance::aif (+ 1 2) it 6)
    3
    CL-USER>
    
  4. INTERN-DEF function. This is opposite to E!-symbols: sometimes you want a macro to intern a dynamically generated symbol name into the package, where macro is defined, not where it is expanded.

    SOME-OTHER-PACKAGE> (defmacro! foo (x) (intern-def (string x)))
    SOME-OTHER-PACKAGE> (in-package cl-user)
    CL-USER> (macroexpand-1 '(foo "ASDF"))
    
    SOME-OTHER-PACKAGE::ASDF ; i.e. not CL-USER::ASDF
    

As is noted in the header of let-over-lambda code, all the differences from that version should be clearly noted. Here they are:

  1. letter-bang-hyphen symbols are used instead of letter-bang symbols to denote symbols, for which something special should be done (E.g g!-foo instead ofg!foo)

  2. In once-only functionality name of a symbol in body of a macro is the same as in the lambda-list of arguments. I.e., instead of let-over-lambda's

    (defmacro square (o!x)
        `(* ,g!x ,g!x)) ; why in the world did g! appeared here? And is o! still accessible?
    

    we have

    (defmacro square (o!-x)
        `(* ,o!-x ,o!-x))
    
  3. New, e!-symbols are added, that allow to express anaphoric macros more conveniently.

  4. p!-symbols can be used to quickly define PROGN-flattening fields.

Few code-duplication was necessary, to make code portable (and not SBCL specific) and to be able not to depend on RUTILS, since the plan is to rewrite anaphoric utilities there through e!- construction.

DEFUN! and DEFMACRO-DRIVER!

Not only DEFMACRO deserves to be enhanced. Sometimes, user just wants to use gensyms and variable injections in other constructs. Hence, DEFUN! and DEFMACRO-DRIVER! provide deformations of original constructs, that understand G!- and E!- symbols (There is not much use of O!-symbols for defun - all args are already once-only, and for defmacro-driver syntax of arguments is very different from generic one, so I didn't implemented it yet.)

Rolling your own

Finally, all the abovementioned deformations are constructed with help of the following underlying building blocks: DEFINE-/G! DEFINE-/O! and DEFINE-/E!. Basically, these allow you to add understanding of G!- O!- and E!- symbols, respectively, to any construct you like. In particular, in the source of this package, defmacro, which understands O!- and G!- is implemented on top of defmacro, which understands only G!- like this:

(define-/o! defmacro/g!/o! defmacro/g! (name args &body body)
        `(,name ,args ,@body))

These building blocks are for now (2013/03/08) not perfect. In particular, they do not scan lambda-list for ARGS and BODY arguments and simply assume they are there.

SPLICING-MACRO

DEFMACRO! now also supports features from CL-SPLICING-MACRO (better see README there https://github.com/mabragor/cl-splicing-macro)

Simply write your macros to expand into SPROGN-form (and don't forget to specify sample-macroexpansion parameters with help of &sample lambda-keyword). The only peculiarity is that this will not work together with once-only (o!-symbols), since their usage results in CAR of the expansion being LET, not SPROGN.

(defmacro! fail-sprogn (o!-x &sample ())
  `(sprogn ,o!-x ,o!-x))

(macroexpand-1 '(fail-sprogn (+ 1 1)))
(LET ((#:G123 (+ 1 1))) ;; not what you would want.
  (SPROGN #:123 #:123))

PROGN-aware fields

Sometimes you want a certain field of your macro to automatically 'flatten' all the subforms to the 'top-level', if they are inside PROGNs.

(your-macros (progn a b (progn c d))) ;; these two are desired
(your-macros a b c d)                 ;; to have identical expansion

This you can easily achieve by defining YOUR-MACROS like this (note the P!-)

(defmacro! your-macros (&rest p!-params)
  (whatever-here))

P!-symbols will also flatten results of expansion of macros, that happen to expand to PROGN.

(defmacro foo ()
  '(progn bar baz))

;; these two also have the same expansion
(your-macros foo (foo))
(your-macros foo bar baz)

Of course, this feature is kind of 'dual' to SPLICING-MACRO, described earlier.


Next: , Previous: , Up: Top   [Contents][Index]

2 Systems

The main system appears first, followed by any subsystem dependency.


Previous: , Up: Systems   [Contents][Index]

2.1 defmacro-enhance

Author

Alexander Popolitov <popolit@itep.ru>

License

GPL

Description

Deformation of defmacro to defmacro!, macrolet to macrolet! etc. in spirit of let-over-lambda.

Version

0.5

Dependencies
Source

defmacro-enhance.asd (file)

Components

Next: , Previous: , Up: Top   [Contents][Index]

3 Files

Files are sorted by type and then listed depth-first from the systems components trees.


Previous: , Up: Files   [Contents][Index]

3.1 Lisp


Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.1 defmacro-enhance.asd

Location

defmacro-enhance.asd

Systems

defmacro-enhance (system)


Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.2 defmacro-enhance/package.lisp

Parent

defmacro-enhance (system)

Location

package.lisp

Packages

defmacro-enhance


Previous: , Up: Lisp files   [Contents][Index]

3.1.3 defmacro-enhance/defmacro-enhance.lisp

Dependency

package.lisp (file)

Parent

defmacro-enhance (system)

Location

defmacro-enhance.lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Top   [Contents][Index]

4 Packages

Packages are listed by definition order.


Previous: , Up: Packages   [Contents][Index]

4.1 defmacro-enhance

Source

package.lisp (file)

Use List
Exported Definitions
Internal Definitions

Next: , Previous: , Up: Top   [Contents][Index]

5 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


Next: , Previous: , Up: Definitions   [Contents][Index]

5.1 Exported definitions


Next: , Previous: , Up: Exported definitions   [Contents][Index]

5.1.1 Macros

Macro: define-/e! SRC-NAME DST-NAME ARGS &body BODY

Deformation, in which E!-symbols are interned in package, where macro is expanded, not where it is defined. Useful for writing anaphoric macros.

Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: define-/g! SRC-NAME DST-NAME ARGS &body BODY

Arg list of DST-NAME should contain BODY. All g!-symbols in BODY are transformed to gensyms.

Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: define-/o! SRC-NAME DST-NAME ARGS &body BODY

All o!-symbols in the ARGS variable of the DST-NAME macro are treated as once-only symbols. BODY variable is parsed accordingly.

Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: define-/p! SRC-NAME DST-NAME

Define macro SRC-NAME on top of DST-NAME. Arg list of DST-NAME should contain ARGS and BODY. All p!-symbols in BODY are transformed to gensyms.

Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: defmacro! NAME ARGS &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: defmacro-driver! CLAUSE-TEMPLATE &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: defun! NAME ARGS &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: flet! DEFINITIONS &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: labels! DEFINITIONS &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: macrolet! DEFINITIONS &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)


Previous: , Up: Exported definitions   [Contents][Index]

5.1.2 Functions

Function: expand-progns EXPR LEXENV
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)


Previous: , Up: Definitions   [Contents][Index]

5.2 Internal definitions


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.1 Special variables

Special Variable: *last-versions*
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.2 Macros

Macro: add-/e! DST-NAME &optional ARGS &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: add-/em! DST-NAME &optional ARGS &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: add-/g! DST-NAME &optional ARGS &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: add-/gm! DST-NAME &optional ARGS &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: add-/i! DST-NAME &optional ARGS &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: add-/o! DST-NAME &optional ARGS &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: add-/om! DST-NAME &optional ARGS &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: add-/p! DST-NAME &optional ARGS &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: add-to-last FEATURE OBJECT &rest EXTRAS

This should be DEFUN because it does produce side-effects, which should not be the case for macros. But let’s see where it leads.

Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: add-to-last-/sampling! OBJECT
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: add-to-last-/splicing! OBJECT
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: def-*!-symbol-p SYMB

Define test-function for argument to be prefix-bang-hyphen symbol.

Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: define-/em! SRC-NAME DST-NAME
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: define-/gm! SRC-NAME DST-NAME
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: define-/i! SRC-NAME DST-NAME ARGS &body BODY

Add a INTERN-DEF form, that interns a symbol into the package, where the macro/function was defined, not where it is expanded/called

Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: define-/om! SRC-NAME DST-NAME
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: define-feature-adder NAME EXTRA-ARGS &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: define-feature-adder/g! NAME ARGS &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: defmacro-driver/g! CLAUSE-TEMPLATE &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: defmacro-driver/g!/e! CLAUSE-TEMPLATE &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: defmacro/g! NAME ARGS &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: defmacro/g!/o! NAME ARGS &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: defmacro/g!/o!/e! NAME ARGS &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: defmacro/g!/o!/e!/p! NAME ARGS &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: defmacro/g!/o!/e!/p!/i! NAME ARGS &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: defmacro/g!/o!/e!/p!/i!/sa! NAME ARGS &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: defmacro/g!/o!/e!/p!/i!/sa!/sp! NAME LAMBDA-LIST &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: defun/g! NAME ARGS &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: defun/g!/e! NAME ARGS &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: defun/g!/e!/i! NAME ARGS &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: extract-last-definition! OBJECT &rest ARGS-BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: flet/gm! DEFINITIONS &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: flet/gm!/em! DEFINITIONS &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: grep-spec-syms (VAR TYPE LST) &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: labels/gm! DEFINITIONS &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: labels/gm!/em! DEFINITIONS &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: macrolet/gm! DEFINITIONS &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: macrolet/gm!/om! DEFINITIONS &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: macrolet/gm!/om!/em! DEFINITIONS &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Macro: transforming-body-when-syms &body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)


Previous: , Up: Internal definitions   [Contents][Index]

5.2.3 Functions

Function: crunch-in-internal-def BODY PACKAGE
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Function: declare-g!-syms-as-gsyms BODY ENV
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Function: e!-symbol-p SYMB
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Function: ensure-environment-in-args ARGS
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Function: g!-symbol-p SYMB
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Function: gensym-p SYM
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Function: hash->assoc HASH
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Function: make-e!-internable BODY ENV
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Function: make-o!-once-only ARGS BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Function: o!-symbol-p SYMB
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Function: once-only SPECS BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Function: p!-symbol-p SYMB
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Function: parse-body BODY
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)

Function: progn-flatten-p!-syms ARGS BODY LEXENV-SYM
Package

defmacro-enhance

Source

defmacro-enhance.lisp (file)


Previous: , Up: Top   [Contents][Index]

Appendix A Indexes


Next: , Previous: , Up: Indexes   [Contents][Index]

A.1 Concepts

Jump to:   D   F   L  
Index Entry  Section

D
defmacro-enhance.asd: The defmacro-enhance<dot>asd file
defmacro-enhance/defmacro-enhance.lisp: The defmacro-enhance/defmacro-enhance<dot>lisp file
defmacro-enhance/package.lisp: The defmacro-enhance/package<dot>lisp file

F
File, Lisp, defmacro-enhance.asd: The defmacro-enhance<dot>asd file
File, Lisp, defmacro-enhance/defmacro-enhance.lisp: The defmacro-enhance/defmacro-enhance<dot>lisp file
File, Lisp, defmacro-enhance/package.lisp: The defmacro-enhance/package<dot>lisp file

L
Lisp File, defmacro-enhance.asd: The defmacro-enhance<dot>asd file
Lisp File, defmacro-enhance/defmacro-enhance.lisp: The defmacro-enhance/defmacro-enhance<dot>lisp file
Lisp File, defmacro-enhance/package.lisp: The defmacro-enhance/package<dot>lisp file

Jump to:   D   F   L  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.2 Functions

Jump to:   A   C   D   E   F   G   H   L   M   O   P   T  
Index Entry  Section

A
add-/e!: Internal macros
add-/em!: Internal macros
add-/g!: Internal macros
add-/gm!: Internal macros
add-/i!: Internal macros
add-/o!: Internal macros
add-/om!: Internal macros
add-/p!: Internal macros
add-to-last: Internal macros
add-to-last-/sampling!: Internal macros
add-to-last-/splicing!: Internal macros

C
crunch-in-internal-def: Internal functions

D
declare-g!-syms-as-gsyms: Internal functions
def-*!-symbol-p: Internal macros
define-/e!: Exported macros
define-/em!: Internal macros
define-/g!: Exported macros
define-/gm!: Internal macros
define-/i!: Internal macros
define-/o!: Exported macros
define-/om!: Internal macros
define-/p!: Exported macros
define-feature-adder: Internal macros
define-feature-adder/g!: Internal macros
defmacro!: Exported macros
defmacro-driver!: Exported macros
defmacro-driver/g!: Internal macros
defmacro-driver/g!/e!: Internal macros
defmacro/g!: Internal macros
defmacro/g!/o!: Internal macros
defmacro/g!/o!/e!: Internal macros
defmacro/g!/o!/e!/p!: Internal macros
defmacro/g!/o!/e!/p!/i!: Internal macros
defmacro/g!/o!/e!/p!/i!/sa!: Internal macros
defmacro/g!/o!/e!/p!/i!/sa!/sp!: Internal macros
defun!: Exported macros
defun/g!: Internal macros
defun/g!/e!: Internal macros
defun/g!/e!/i!: Internal macros

E
e!-symbol-p: Internal functions
ensure-environment-in-args: Internal functions
expand-progns: Exported functions
extract-last-definition!: Internal macros

F
flet!: Exported macros
flet/gm!: Internal macros
flet/gm!/em!: Internal macros
Function, crunch-in-internal-def: Internal functions
Function, declare-g!-syms-as-gsyms: Internal functions
Function, e!-symbol-p: Internal functions
Function, ensure-environment-in-args: Internal functions
Function, expand-progns: Exported functions
Function, g!-symbol-p: Internal functions
Function, gensym-p: Internal functions
Function, hash->assoc: Internal functions
Function, make-e!-internable: Internal functions
Function, make-o!-once-only: Internal functions
Function, o!-symbol-p: Internal functions
Function, once-only: Internal functions
Function, p!-symbol-p: Internal functions
Function, parse-body: Internal functions
Function, progn-flatten-p!-syms: Internal functions

G
g!-symbol-p: Internal functions
gensym-p: Internal functions
grep-spec-syms: Internal macros

H
hash->assoc: Internal functions

L
labels!: Exported macros
labels/gm!: Internal macros
labels/gm!/em!: Internal macros

M
Macro, add-/e!: Internal macros
Macro, add-/em!: Internal macros
Macro, add-/g!: Internal macros
Macro, add-/gm!: Internal macros
Macro, add-/i!: Internal macros
Macro, add-/o!: Internal macros
Macro, add-/om!: Internal macros
Macro, add-/p!: Internal macros
Macro, add-to-last: Internal macros
Macro, add-to-last-/sampling!: Internal macros
Macro, add-to-last-/splicing!: Internal macros
Macro, def-*!-symbol-p: Internal macros
Macro, define-/e!: Exported macros
Macro, define-/em!: Internal macros
Macro, define-/g!: Exported macros
Macro, define-/gm!: Internal macros
Macro, define-/i!: Internal macros
Macro, define-/o!: Exported macros
Macro, define-/om!: Internal macros
Macro, define-/p!: Exported macros
Macro, define-feature-adder: Internal macros
Macro, define-feature-adder/g!: Internal macros
Macro, defmacro!: Exported macros
Macro, defmacro-driver!: Exported macros
Macro, defmacro-driver/g!: Internal macros
Macro, defmacro-driver/g!/e!: Internal macros
Macro, defmacro/g!: Internal macros
Macro, defmacro/g!/o!: Internal macros
Macro, defmacro/g!/o!/e!: Internal macros
Macro, defmacro/g!/o!/e!/p!: Internal macros
Macro, defmacro/g!/o!/e!/p!/i!: Internal macros
Macro, defmacro/g!/o!/e!/p!/i!/sa!: Internal macros
Macro, defmacro/g!/o!/e!/p!/i!/sa!/sp!: Internal macros
Macro, defun!: Exported macros
Macro, defun/g!: Internal macros
Macro, defun/g!/e!: Internal macros
Macro, defun/g!/e!/i!: Internal macros
Macro, extract-last-definition!: Internal macros
Macro, flet!: Exported macros
Macro, flet/gm!: Internal macros
Macro, flet/gm!/em!: Internal macros
Macro, grep-spec-syms: Internal macros
Macro, labels!: Exported macros
Macro, labels/gm!: Internal macros
Macro, labels/gm!/em!: Internal macros
Macro, macrolet!: Exported macros
Macro, macrolet/gm!: Internal macros
Macro, macrolet/gm!/om!: Internal macros
Macro, macrolet/gm!/om!/em!: Internal macros
Macro, transforming-body-when-syms: Internal macros
macrolet!: Exported macros
macrolet/gm!: Internal macros
macrolet/gm!/om!: Internal macros
macrolet/gm!/om!/em!: Internal macros
make-e!-internable: Internal functions
make-o!-once-only: Internal functions

O
o!-symbol-p: Internal functions
once-only: Internal functions

P
p!-symbol-p: Internal functions
parse-body: Internal functions
progn-flatten-p!-syms: Internal functions

T
transforming-body-when-syms: Internal macros

Jump to:   A   C   D   E   F   G   H   L   M   O   P   T  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.3 Variables

Jump to:   *  
S  
Index Entry  Section

*
*last-versions*: Internal special variables

S
Special Variable, *last-versions*: Internal special variables

Jump to:   *  
S  

Previous: , Up: Indexes   [Contents][Index]

A.4 Data types

Jump to:   D   P   S  
Index Entry  Section

D
defmacro-enhance: The defmacro-enhance system
defmacro-enhance: The defmacro-enhance package

P
Package, defmacro-enhance: The defmacro-enhance package

S
System, defmacro-enhance: The defmacro-enhance system

Jump to:   D   P   S