The anaphora Reference Manual

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

The anaphora Reference Manual

This is the anaphora Reference Manual, version 0.9.8, generated automatically by Declt version 4.0 beta 2 "William Riker" on Mon Aug 15 03:10:52 2022 GMT+0.

Table of Contents


1 Introduction

Anaphora

Anaphora is the anaphoric macro collection from Hell: it includes many new fiends in addition to old friends like AIF and AWHEN. Anaphora has been placed in Public Domain by the author, Nikodemus Siivola.

Installation

Use quicklisp, and simply:

CL-USER(1): (ql:quickload "anaphora")

Documentation

Anaphoric macros provide implicit bindings for various operations. Extensive use of anaphoric macros is not good style, and probably makes you go blind as well — there's a reason why Anaphora claims to be from Hell.

Anaphora provides two families of anaphoric macros, which can be identified by their names and packages (both families are also exported from the package ANAPHORA). The implicitly-bound symbol ANAPHORA:IT is also exported from all three packages.

Basic anaphora

Exported from package ANAPHORA-BASIC

These bind their first argument to IT via LET. In case of COND all clauses have their test-values bound to IT.

Variants: AAND, ALET, APROG1, AIF, ACOND, AWHEN, ACASE, ACCASE, AECASE, ATYPECASE, ACTYPECASE, and AETYPECASE.

Symbol-macro anaphora

Exported from package ANAPHORA-SYMBOL

These bind their first argument (unevaluated) to IT via SYMBOL-MACROLET.

Variants: SOR, SLET, SIF, SCOND, SUNLESS, SWHEN, SCASE, SCCASE, SECASE, STYPECASE, SCTYPECASE, SETYPECASE.

Also: ASIF, which binds via LET for the then-clause, and SYMBOL-MACROLET for the else-clause


2 Systems

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


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

2.1 anaphora

The Anaphoric Macro Package from Hell

Maintainer

Sean Whitton <spwhitton@spwhitton.name>

Author

Nikodemus Siivola <nikodemus@random-state.net>

License

Public Domain

Version

0.9.8

Source

anaphora.asd.

Child Components

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   [Contents][Index]

3.1.1 anaphora/anaphora.asd

Source

anaphora.asd.

Parent Component

anaphora (system).

ASDF Systems

anaphora.


3.1.2 anaphora/packages.lisp

Source

anaphora.asd.

Parent Component

anaphora (system).

Packages

3.1.3 anaphora/early.lisp

Dependency

packages.lisp (file).

Source

anaphora.asd.

Parent Component

anaphora (system).

Internals

3.1.4 anaphora/symbolic.lisp

Dependency

early.lisp (file).

Source

anaphora.asd.

Parent Component

anaphora (system).

Internals

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

3.1.5 anaphora/anaphora.lisp

Dependency

symbolic.lisp (file).

Source

anaphora.asd.

Parent Component

anaphora (system).

Public Interface

4 Packages

Packages are listed by definition order.


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

4.1 anaphora-basic

ANAPHORA-BASIC provides all normal anaphoric constructs, which bind primary values to IT/SELF.

Source

packages.lisp.

Use List

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

4.2 anaphora

ANAPHORA provides a full complement of anaphoric macros. Subsets of the functionality provided by this package are exported from ANAPHORA-BASIC and ANAPHORA-SYMBOL.

Source

packages.lisp.

Use List

common-lisp.

Used By List
Public Interface
Internals

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

4.3 anaphora-symbol

ANAPHORA-SYMBOL provides “symbolic anaphoric macros”, which bind forms
to IT via SYMBOL-MACROLET.

Examples:

(sor (gethash key table) (setf it default))

(asif (gethash key table)
(foo it) ; IT is a value bound by LET here
(setf it default)) ; IT is the GETHASH form bound by SYMBOL-MACROLET here

Source

packages.lisp.

Use List

5 Definitions

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


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

5.1 Public Interface


5.1.1 Macros

Macro: aand (first &rest rest)

Like AND, except binds the first argument to IT (via LET) for the scope of the rest of the arguments.

Package

anaphora.

Source

anaphora.lisp.

Macro: acase (keyform &body cases)

Like CASE, except binds the result of the keyform to IT (via LET) for the scope of the cases.

Package

anaphora.

Source

anaphora.lisp.

Macro: accase (keyform &body cases)

Like CCASE, except binds the result of the keyform to IT (via LET) for the scope of the cases. Unlike CCASE, the keyform/place doesn’t receive new values possibly stored with STORE-VALUE restart; the new value is received by IT.

Package

anaphora.

Source

anaphora.lisp.

Macro: acond (&body clauses)

Like COND, except result of each test-form is bound to IT (via LET) for the scope of the corresponding clause.

Package

anaphora.

Source

anaphora.lisp.

Macro: actypecase (keyform &body cases)

Like CTYPECASE, except binds the result of the keyform to IT (via LET) for the scope of the cases. Unlike CTYPECASE, new values possible stored by the STORE-VALUE restart are not received by the keyform/place, but by IT.

Package

anaphora.

Source

anaphora.lisp.

Macro: aecase (keyform &body cases)

Like ECASE, except binds the result of the keyform to IT (via LET) for the scope of the cases.

Package

anaphora.

Source

anaphora.lisp.

Macro: aetypecase (keyform &body cases)

Like ETYPECASE, except binds the result of the keyform to IT (via LET) for the scope of the cases.

Package

anaphora.

Source

anaphora.lisp.

Macro: aif (test then &optional else)

Like IF, except binds the result of the test to IT (via LET) for the scope of the then and else expressions.

Package

anaphora.

Source

anaphora.lisp.

Macro: alambda (lambda-list &body body)

Like LAMBDA, except that SELF is bound to the resulting function (via LABELS) within BODY.

Package

anaphora.

Source

anaphora.lisp.

Macro: alet (form &body body)

Binds the FORM to IT (via LET) in the scope of the BODY.

Package

anaphora.

Source

anaphora.lisp.

Macro: aprog1 (first &body rest)

Binds IT to the first form so that it can be used in the rest of the forms. The whole thing returns IT.

Package

anaphora.

Source

anaphora.lisp.

Macro: asif (test then &optional else)

Like IF, except binds the result of the test to IT (via LET) for the the scope of the then-expression, and the test form to IT (via SYMBOL-MACROLET) for the scope of the else-expression. Within scope of the else-expression, IT can be set with SETF.

Package

anaphora.

Source

anaphora.lisp.

Macro: atypecase (keyform &body cases)

Like TYPECASE, except binds the result of the keyform to IT (via LET) for the scope of the cases.

Package

anaphora.

Source

anaphora.lisp.

Macro: awhen (test &body body)

Like WHEN, except binds the result of the test to IT (via LET) for the scope of the body.

Package

anaphora.

Source

anaphora.lisp.

Macro: scase (keyform &body cases)

Like CASE, except binds the keyform to IT (via SYMBOL-MACROLET) for the scope of the body. IT can be set with SETF.

Package

anaphora.

Source

anaphora.lisp.

Macro: sccase (keyform &body cases)

Like CCASE, except binds the keyform to IT (via SYMBOL-MACROLET) for the scope of the cases. IT can be set with SETF.

Package

anaphora.

Source

anaphora.lisp.

Macro: scond (&body clauses)

Like COND, except each test-form is bound to IT (via SYMBOL-MACROLET) for the scope of the corresponsing clause. IT can be set with SETF.

Package

anaphora.

Source

anaphora.lisp.

Macro: sctypecase (keyform &body cases)

Like CTYPECASE, except binds the keyform to IT (via SYMBOL-MACROLET) for the scope of the cases. IT can be set with SETF.

Package

anaphora.

Source

anaphora.lisp.

Macro: secase (keyform &body cases)

Like ECASE, except binds the keyform to IT (via SYMBOL-MACROLET) for the scope of the cases. IT can be set with SETF.

Package

anaphora.

Source

anaphora.lisp.

Macro: setypecase (keyform &body cases)

Like ETYPECASE, except binds the keyform to IT (via SYMBOL-MACROLET) for the scope of the cases. IT can be set with SETF.

Package

anaphora.

Source

anaphora.lisp.

Macro: sif (test then &optional else)

Like IF, except binds the test form to IT (via SYMBOL-MACROLET) for the scope of the then and else expressions. IT can be set with SETF

Package

anaphora.

Source

anaphora.lisp.

Macro: slet (form &body body)

Binds the FORM to IT (via SYMBOL-MACROLET) in the scope of the BODY. IT can be set with SETF.

Package

anaphora.

Source

anaphora.lisp.

Macro: sor (first &rest rest)

Like OR, except binds the first argument to IT (via SYMBOL-MACROLET) for the scope of the rest of the arguments. IT can be set with SETF.

Package

anaphora.

Source

anaphora.lisp.

Macro: stypecase (keyform &body cases)

Like TYPECASE, except binds the keyform to IT (via SYMBOL-MACROLET) for the scope of the cases. IT can be set with SETF.

Package

anaphora.

Source

anaphora.lisp.

Macro: sunless (test &body body)

Like UNLESS, except binds the test form to IT (via SYMBOL-MACROLET) for the scope of the body. IT can be set with SETF.

Package

anaphora.

Source

anaphora.lisp.

Macro: swhen (test &body body)

Like WHEN, except binds the test form to IT (via SYMBOL-MACROLET) for the scope of the body. IT can be set with SETF.

Package

anaphora.

Source

anaphora.lisp.


5.2 Internals


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

5.2.1 Macros

Macro: anaphoric (op test &body body)
Package

anaphora.

Source

symbolic.lisp.

Macro: ignore-first (first expr)
Package

anaphora.

Source

early.lisp.

Macro: internal-symbol-macrolet (&rest whatever)
Setf Expander: (setf internal-symbol-macrolet) (binding-forms place)
Package

anaphora.

Source

symbolic.lisp.

Macro: symbolic (operation test &rest other-args)
Package

anaphora.

Source

symbolic.lisp.

Macro: with-unique-names ((&rest bindings) &body body)
Package

anaphora.

Source

early.lisp.


Appendix A Indexes


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

A.1 Concepts


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

A.2 Functions

Jump to:   (  
A   I   M   S   W  
Index Entry  Section

(
(setf internal-symbol-macrolet): Private macros

A
aand: Public macros
acase: Public macros
accase: Public macros
acond: Public macros
actypecase: Public macros
aecase: Public macros
aetypecase: Public macros
aif: Public macros
alambda: Public macros
alet: Public macros
anaphoric: Private macros
aprog1: Public macros
asif: Public macros
atypecase: Public macros
awhen: Public macros

I
ignore-first: Private macros
internal-symbol-macrolet: Private macros

M
Macro, aand: Public macros
Macro, acase: Public macros
Macro, accase: Public macros
Macro, acond: Public macros
Macro, actypecase: Public macros
Macro, aecase: Public macros
Macro, aetypecase: Public macros
Macro, aif: Public macros
Macro, alambda: Public macros
Macro, alet: Public macros
Macro, anaphoric: Private macros
Macro, aprog1: Public macros
Macro, asif: Public macros
Macro, atypecase: Public macros
Macro, awhen: Public macros
Macro, ignore-first: Private macros
Macro, internal-symbol-macrolet: Private macros
Macro, scase: Public macros
Macro, sccase: Public macros
Macro, scond: Public macros
Macro, sctypecase: Public macros
Macro, secase: Public macros
Macro, setypecase: Public macros
Macro, sif: Public macros
Macro, slet: Public macros
Macro, sor: Public macros
Macro, stypecase: Public macros
Macro, sunless: Public macros
Macro, swhen: Public macros
Macro, symbolic: Private macros
Macro, with-unique-names: Private macros

S
scase: Public macros
sccase: Public macros
scond: Public macros
sctypecase: Public macros
secase: Public macros
Setf Expander, (setf internal-symbol-macrolet): Private macros
setypecase: Public macros
sif: Public macros
slet: Public macros
sor: Public macros
stypecase: Public macros
sunless: Public macros
swhen: Public macros
symbolic: Private macros

W
with-unique-names: Private macros

Jump to:   (  
A   I   M   S   W  

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

A.3 Variables