The fare-quasiquote Reference Manual

Table of Contents

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

The fare-quasiquote Reference Manual

This is the fare-quasiquote Reference Manual, version 1.0.1, generated automatically by Declt version 2.3 "Robert April" on Wed Mar 14 03:52:45 2018 GMT+0.


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

1 Introduction

fare-quasiquote — a pattern-matching friendly implementation of Quasiquote

Copyright ⓒ 2002-2016 Fahree Reedaw fare@tunes.org

Purpose

The main purpose of this n+2nd reimplementation of quasiquote, is enable matching of quasiquoted patterns, using OPTIMA or TRIVIA.

Now, developing this implementation was also a challenge in understanding the ins and outs of quasiquotation, and in exploring the way it interacts with extended support for constant-building syntactic constructs. And this, at least to me was as much fun as it was an intellectual challenge.

How to use it

The recommended way to use fare-quasiquote is to have your defsystem depend on fare-quasiquote-extras, and at the start your file, use:

(named-readtables:in-readtable :fare-quasiquote)

Then you can match expressions using optima:match, such as:

(optima:match '(1 (2 3) 4 5)
   (`(a (b ,c) ,@d) (list a b c d)))  ;=> (1 2 3 (4 5))

You can also at the SLIME REPL use:

(asdf:load-system "fare-quasiquote-extras")
(named-readtables:in-readtable :fare-quasiquote)

However, beware to not leak fare-quasiquote into systems you load that do not :depends-on ("fare-quasiquote"); and so until ASDF is fixed to do that for you (hopefully by ASDF 3.3), before you call (asdf:load-system ...), you need to restore the default *readtable* with, e.g.:

(named-readtables:in-readtable :standard)

Discussion

The fare-quasiquote system is a reimplementation of quasiquote with two advantages:

When using fare-quasiquote-optima, expressions parsed by fare-quasiquote can be used as pattern matching patterns with optima. trivia also supports fare-quasiquote.

We recommend you use named-readtables to enable at the beginning and end of your Lisp files, or around their compilation (e.g. using ASDF around-compile hooks). Note however that it is important not to let such readtables leak into the compilation of files that do not depend on fare-quasiquote.

Note that since pattern matchers like optima and trivia do not support backtracking (unlike say an embedded logic programming language), they cannot match append patterns, and those quasiquote templates that expand into something using append can't be used as patterns to match. This means that the use of ,@ or ,. is restricted to the end of a list when used as a pattern.

fare-quasiquote was originally written to work with fare-matcher, and legacy support for fare-matcher is available in fare-quasiquote-matcher, now distributed with fare-matcher itself. But fare-matcher is deprecated. optima supersedes fare-matcher, and fare-quasiquote-optima supersedes fare-quasiquote-matcher.

References

Essential documents consulted while implementing this file:

If you for whatever reason ever feel like reimplementing backquote, you should probably leverage the many tests in my test file quasiquote-test.lisp --- in addition to my own test cases, I notably included the tests from SBCL; they include regression tests for many actual bugs in subtle cases that you might otherwise miss.

Read-time vs Macro-expansion-time

In conformance with the CLHS, fare-quasiquote expands its patterns at read-time, at least unless you enable a feature #+quasiquote-at-macro-expansion-time.

In both cases, fare-quasiquote handles unquoting in #() and #n() syntax by re-defining the syntax for hash-left-paren as well as for backquote.

If you enable feature #+quasiquote-at-macro-expansion-time, fare-quasiquote will expands its patterns at macro-expansion time, using the same convention as Scheme, with symbols quasiquote, unquote, unquote-splicing and unquote-nsplicing defined in package fare-quasiquote (but not exported from it).

Known Issues

Meta Unquote Protocol (not implemented)

The CLHS specifies that quasiquoting works with simple-vector, but not with other arrays (multi-dimensional or not simple), and not with arbitrary structures. However, a fully general quasiquote facility would support quasiquoting within arbitrary syntax, using a MUP: Meta Unquote Protocol.

The MUP would allow to extend the quasiquote mechanism with support for new constant-building syntactic constructs as such constructs are defined. Maybe we will end up with a full-fledge declarative infrastructure for a Parser-Preprocessor-Pretty-Printer, like camlp4 only more declarative.

The MUP would have an abstract API for arbitrary readers; existing syntax for vectors would implemented using the MUP. For compliance reasons, further MUP extensions would be disabled by default, but could be made available with a suitable function call, e.g. for #A #S #P etc.

The MUP might also implement tagged (and multiple-valued?) quasiquotes, unquotes and quotes.

Note that copying and modifying read-tables is expensive, that dynamically modifying and restoring read-tables might interfere with #. syntax, and that caching modified read-tables will interfere with any subsequent modification of a cached read-table, comparison not being possible. This means that if we wanted the MUP to adapt to existing extensions without modifying existing code, we would have to intercept the definition of syntax reading functions before they are fed to either set-macro-character or set-dispatch-macro-character, or intercept the entire reader protocol. Spooky. Now, this also requires that the current depth of quasiquoting be consulted any time any of the MUP-enabled constructors is read.

The principle of the MUP is that:

Note that the above is obscured because we're trying to discuss the behaviour of quasiquote-containing programs without having a meta-level quasiquoting facility that could distinguish between what is constant or variable at the meta-level independently from what is constant or variable at the base level: #CONSTRUCTOR and #ARGUMENTS would be better specified through a special meta-level unquotation, the above expressions being in a corresponding special quasiquotation. A feature that would allow for clear separation of levels of meta-language would be a tagged quasiquote feature, as in Slate.

The idea of making circular data-structures work within quasiquotation makes my head ache with overarching pain. You're crazier than I am if you do it and do it right.

PS: If you're able to follow this discussion, you impress me. Come join the TUNES proje


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 fare-quasiquote

Author

Francois-Rene Rideau

License

MIT

Description

Portable, matchable implementation of quasiquote

Long Description

fare-quasiquote implements
a portable quasiquote that you can control.

Version

1.0.1

Dependency

fare-utils (at least version 1.0.0)

Source

fare-quasiquote.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 fare-quasiquote.asd

Location

fare-quasiquote.asd

Systems

fare-quasiquote (system)


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

3.1.2 fare-quasiquote/packages.lisp

Parent

fare-quasiquote (system)

Location

packages.lisp

Packages

fare-quasiquote


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

3.1.3 fare-quasiquote/quasiquote.lisp

Dependency

packages.lisp (file)

Parent

fare-quasiquote (system)

Location

quasiquote.lisp

Exported Definitions
Internal Definitions

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

3.1.4 fare-quasiquote/pp-quasiquote.lisp

Dependency

quasiquote.lisp (file)

Parent

fare-quasiquote (system)

Location

pp-quasiquote.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 fare-quasiquote

Quasiquote implementation with and for pattern-matching

Source

packages.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 Special variables

Special Variable: *fq-pprint-dispatch*
Package

fare-quasiquote

Source

pp-quasiquote.lisp (file)

Special Variable: *fq-readtable*
Package

fare-quasiquote

Source

quasiquote.lisp (file)


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

5.1.2 Macros

Macro: quasiquote X
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Macro: unquote X
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Macro: unquote-splicing X
Package

fare-quasiquote

Source

quasiquote.lisp (file)


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

5.1.3 Functions

Function: call-with-quasiquote-reader THUNK
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: call-with-unquote-nsplicing-reader THUNK
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: call-with-unquote-reader THUNK
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: call-with-unquote-splicing-reader THUNK
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: enable-qq-pp &key PRIORITY TABLE
Package

fare-quasiquote

Source

pp-quasiquote.lisp (file)

Function: enable-quasiquote &key EXPANSION-TIME TABLE
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: quasiquote-expand X
Package

fare-quasiquote

Source

quasiquote.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: *hash-dot-reader*
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Special Variable: *quasiquote-level*

current depth of quasiquote nesting

Package

fare-quasiquote

Source

quasiquote.lisp (file)


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

5.2.2 Macros

Macro: quote X
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Macro: unquote-nsplicing X
Package

fare-quasiquote

Source

quasiquote.lisp (file)


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

5.2.3 Functions

Function: append &rest R
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: backquote-reader EXPANSION-TIME
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: cons X Y
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: copy-x-n-vector INSTANCE
Package

fare-quasiquote

Source

pp-quasiquote.lisp (file)

Function: copy-x-unquote INSTANCE
Package

fare-quasiquote

Source

pp-quasiquote.lisp (file)

Function: expand-unquote X
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: k-append &rest R
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: k-append-p X
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: k-cons X Y
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: k-cons-p X
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: k-list &rest R
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: k-list* &rest R
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: k-list*-p X
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: k-list-p X
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: k-literal LITERAL
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: k-n-vector N L
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: k-n-vector-contents X
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: k-n-vector-n X
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: k-n-vector-p X
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: k-nconc &rest R
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: k-nconc-p X
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: kwote X
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: list &rest R
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: list* &rest R
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: make-quasiquote X
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: make-unquote X
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: make-unquote-nsplicing X
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: make-unquote-splicing X
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: make-vector L
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: make-x-n-vector &key (N N) (CONTENTS CONTENTS)
Package

fare-quasiquote

Source

pp-quasiquote.lisp (file)

Function: make-x-unquote &key (FORM FORM)
Package

fare-quasiquote

Source

pp-quasiquote.lisp (file)

Function: n-vector N CONTENTS
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: nconc &rest R
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: pprint-quasiquote STREAM FORM &rest NOISE
Package

fare-quasiquote

Source

pp-quasiquote.lisp (file)

Function: pprint-starts-with-dot-or-at-p FORM
Package

fare-quasiquote

Source

pp-quasiquote.lisp (file)

Function: pprint-unquasiquote STREAM FORM &rest NOISE
Package

fare-quasiquote

Source

pp-quasiquote.lisp (file)

Function: properly-ended-list-p X
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: quasiquote-expand-0 X

Given an expression x under a backquote, return two values:
1- a token identifying the context: nil quote :literal list list* append nconc 2- a form
When combining backquoted expressions, tokens are used for simplifications.

Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: quasiquote-expand-1 TOP X

Given a top token and an expression, give the quasiquoting of the result of the top operation applied to the expression

Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: quasiquote-form-p X
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: quasiquote-unexpand X
Package

fare-quasiquote

Source

pp-quasiquote.lisp (file)

Function: quasiquote-unexpand-0 TOP X
Package

fare-quasiquote

Source

pp-quasiquote.lisp (file)

Function: quasiquote-unexpand-1 TOP X
Package

fare-quasiquote

Source

pp-quasiquote.lisp (file)

Function: quasiquote-unexpand-2 TOP FORM
Package

fare-quasiquote

Source

pp-quasiquote.lisp (file)

Function: quasiquote-unexpand-last X
Package

fare-quasiquote

Source

pp-quasiquote.lisp (file)

Function: quasiquotep X &optional ON-ERROR
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: quotep X &optional ON-ERROR
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: read-backquote STREAM CHAR
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: read-comma STREAM CHAR
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: read-hash-dot STREAM SUBCHAR ARG
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: read-hash-paren STREAM SUBCHAR ARG
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: read-macroexpand-time-backquote STREAM CHAR
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: read-quasiquote STREAM
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: read-read-time-backquote STREAM CHAR
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: read-unquote STREAM
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: read-unquote-nsplicing STREAM
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: read-unquote-splicing STREAM
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: read-vector STREAM N
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: unquote-nsplicing-p X &optional ON-ERROR
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: unquote-splicing-p X &optional ON-ERROR
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: unquote-xsplicing-p X
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: unquotep X &optional ON-ERROR
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: valid-k-n-vector-p X
Package

fare-quasiquote

Source

quasiquote.lisp (file)

Function: x-n-vector-contents INSTANCE
Function: (setf x-n-vector-contents) VALUE INSTANCE
Package

fare-quasiquote

Source

pp-quasiquote.lisp (file)

Function: x-n-vector-n INSTANCE
Function: (setf x-n-vector-n) VALUE INSTANCE
Package

fare-quasiquote

Source

pp-quasiquote.lisp (file)

Function: x-n-vector-p OBJECT
Package

fare-quasiquote

Source

pp-quasiquote.lisp (file)

Function: x-unquote-form INSTANCE
Function: (setf x-unquote-form) VALUE INSTANCE
Package

fare-quasiquote

Source

pp-quasiquote.lisp (file)

Function: x-unquote-p OBJECT
Package

fare-quasiquote

Source

pp-quasiquote.lisp (file)


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

5.2.4 Structures

Structure: x-n-vector ()
Package

fare-quasiquote

Source

pp-quasiquote.lisp (file)

Direct superclasses

structure-object (structure)

Direct methods

print-object (method)

Direct slots
Slot: n
Readers

x-n-vector-n (function)

Writers

(setf x-n-vector-n) (function)

Slot: contents
Readers

x-n-vector-contents (function)

Writers

(setf x-n-vector-contents) (function)

Structure: x-unquote ()
Package

fare-quasiquote

Source

pp-quasiquote.lisp (file)

Direct superclasses

structure-object (structure)

Direct methods

print-object (method)

Direct slots
Slot: form
Readers

x-unquote-form (function)

Writers

(setf x-unquote-form) (function)


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

Appendix A Indexes


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

A.1 Concepts

Jump to:   F   L  
Index Entry  Section

F
fare-quasiquote.asd: The fare-quasiquote<dot>asd file
fare-quasiquote/packages.lisp: The fare-quasiquote/packages<dot>lisp file
fare-quasiquote/pp-quasiquote.lisp: The fare-quasiquote/pp-quasiquote<dot>lisp file
fare-quasiquote/quasiquote.lisp: The fare-quasiquote/quasiquote<dot>lisp file
File, Lisp, fare-quasiquote.asd: The fare-quasiquote<dot>asd file
File, Lisp, fare-quasiquote/packages.lisp: The fare-quasiquote/packages<dot>lisp file
File, Lisp, fare-quasiquote/pp-quasiquote.lisp: The fare-quasiquote/pp-quasiquote<dot>lisp file
File, Lisp, fare-quasiquote/quasiquote.lisp: The fare-quasiquote/quasiquote<dot>lisp file

L
Lisp File, fare-quasiquote.asd: The fare-quasiquote<dot>asd file
Lisp File, fare-quasiquote/packages.lisp: The fare-quasiquote/packages<dot>lisp file
Lisp File, fare-quasiquote/pp-quasiquote.lisp: The fare-quasiquote/pp-quasiquote<dot>lisp file
Lisp File, fare-quasiquote/quasiquote.lisp: The fare-quasiquote/quasiquote<dot>lisp file

Jump to:   F   L  

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

A.2 Functions

Jump to:   (  
A   B   C   E   F   K   L   M   N   P   Q   R   U   V   X  
Index Entry  Section

(
(setf x-n-vector-contents): Internal functions
(setf x-n-vector-n): Internal functions
(setf x-unquote-form): Internal functions

A
append: Internal functions

B
backquote-reader: Internal functions

C
call-with-quasiquote-reader: Exported functions
call-with-unquote-nsplicing-reader: Exported functions
call-with-unquote-reader: Exported functions
call-with-unquote-splicing-reader: Exported functions
cons: Internal functions
copy-x-n-vector: Internal functions
copy-x-unquote: Internal functions

E
enable-qq-pp: Exported functions
enable-quasiquote: Exported functions
expand-unquote: Internal functions

F
Function, (setf x-n-vector-contents): Internal functions
Function, (setf x-n-vector-n): Internal functions
Function, (setf x-unquote-form): Internal functions
Function, append: Internal functions
Function, backquote-reader: Internal functions
Function, call-with-quasiquote-reader: Exported functions
Function, call-with-unquote-nsplicing-reader: Exported functions
Function, call-with-unquote-reader: Exported functions
Function, call-with-unquote-splicing-reader: Exported functions
Function, cons: Internal functions
Function, copy-x-n-vector: Internal functions
Function, copy-x-unquote: Internal functions
Function, enable-qq-pp: Exported functions
Function, enable-quasiquote: Exported functions
Function, expand-unquote: Internal functions
Function, k-append: Internal functions
Function, k-append-p: Internal functions
Function, k-cons: Internal functions
Function, k-cons-p: Internal functions
Function, k-list: Internal functions
Function, k-list*: Internal functions
Function, k-list*-p: Internal functions
Function, k-list-p: Internal functions
Function, k-literal: Internal functions
Function, k-n-vector: Internal functions
Function, k-n-vector-contents: Internal functions
Function, k-n-vector-n: Internal functions
Function, k-n-vector-p: Internal functions
Function, k-nconc: Internal functions
Function, k-nconc-p: Internal functions
Function, kwote: Internal functions
Function, list: Internal functions
Function, list*: Internal functions
Function, make-quasiquote: Internal functions
Function, make-unquote: Internal functions
Function, make-unquote-nsplicing: Internal functions
Function, make-unquote-splicing: Internal functions
Function, make-vector: Internal functions
Function, make-x-n-vector: Internal functions
Function, make-x-unquote: Internal functions
Function, n-vector: Internal functions
Function, nconc: Internal functions
Function, pprint-quasiquote: Internal functions
Function, pprint-starts-with-dot-or-at-p: Internal functions
Function, pprint-unquasiquote: Internal functions
Function, properly-ended-list-p: Internal functions
Function, quasiquote-expand: Exported functions
Function, quasiquote-expand-0: Internal functions
Function, quasiquote-expand-1: Internal functions
Function, quasiquote-form-p: Internal functions
Function, quasiquote-unexpand: Internal functions
Function, quasiquote-unexpand-0: Internal functions
Function, quasiquote-unexpand-1: Internal functions
Function, quasiquote-unexpand-2: Internal functions
Function, quasiquote-unexpand-last: Internal functions
Function, quasiquotep: Internal functions
Function, quotep: Internal functions
Function, read-backquote: Internal functions
Function, read-comma: Internal functions
Function, read-hash-dot: Internal functions
Function, read-hash-paren: Internal functions
Function, read-macroexpand-time-backquote: Internal functions
Function, read-quasiquote: Internal functions
Function, read-read-time-backquote: Internal functions
Function, read-unquote: Internal functions
Function, read-unquote-nsplicing: Internal functions
Function, read-unquote-splicing: Internal functions
Function, read-vector: Internal functions
Function, unquote-nsplicing-p: Internal functions
Function, unquote-splicing-p: Internal functions
Function, unquote-xsplicing-p: Internal functions
Function, unquotep: Internal functions
Function, valid-k-n-vector-p: Internal functions
Function, x-n-vector-contents: Internal functions
Function, x-n-vector-n: Internal functions
Function, x-n-vector-p: Internal functions
Function, x-unquote-form: Internal functions
Function, x-unquote-p: Internal functions

K
k-append: Internal functions
k-append-p: Internal functions
k-cons: Internal functions
k-cons-p: Internal functions
k-list: Internal functions
k-list*: Internal functions
k-list*-p: Internal functions
k-list-p: Internal functions
k-literal: Internal functions
k-n-vector: Internal functions
k-n-vector-contents: Internal functions
k-n-vector-n: Internal functions
k-n-vector-p: Internal functions
k-nconc: Internal functions
k-nconc-p: Internal functions
kwote: Internal functions

L
list: Internal functions
list*: Internal functions

M
Macro, quasiquote: Exported macros
Macro, quote: Internal macros
Macro, unquote: Exported macros
Macro, unquote-nsplicing: Internal macros
Macro, unquote-splicing: Exported macros
make-quasiquote: Internal functions
make-unquote: Internal functions
make-unquote-nsplicing: Internal functions
make-unquote-splicing: Internal functions
make-vector: Internal functions
make-x-n-vector: Internal functions
make-x-unquote: Internal functions

N
n-vector: Internal functions
nconc: Internal functions

P
pprint-quasiquote: Internal functions
pprint-starts-with-dot-or-at-p: Internal functions
pprint-unquasiquote: Internal functions
properly-ended-list-p: Internal functions

Q
quasiquote: Exported macros
quasiquote-expand: Exported functions
quasiquote-expand-0: Internal functions
quasiquote-expand-1: Internal functions
quasiquote-form-p: Internal functions
quasiquote-unexpand: Internal functions
quasiquote-unexpand-0: Internal functions
quasiquote-unexpand-1: Internal functions
quasiquote-unexpand-2: Internal functions
quasiquote-unexpand-last: Internal functions
quasiquotep: Internal functions
quote: Internal macros
quotep: Internal functions

R
read-backquote: Internal functions
read-comma: Internal functions
read-hash-dot: Internal functions
read-hash-paren: Internal functions
read-macroexpand-time-backquote: Internal functions
read-quasiquote: Internal functions
read-read-time-backquote: Internal functions
read-unquote: Internal functions
read-unquote-nsplicing: Internal functions
read-unquote-splicing: Internal functions
read-vector: Internal functions

U
unquote: Exported macros
unquote-nsplicing: Internal macros
unquote-nsplicing-p: Internal functions
unquote-splicing: Exported macros
unquote-splicing-p: Internal functions
unquote-xsplicing-p: Internal functions
unquotep: Internal functions

V
valid-k-n-vector-p: Internal functions

X
x-n-vector-contents: Internal functions
x-n-vector-n: Internal functions
x-n-vector-p: Internal functions
x-unquote-form: Internal functions
x-unquote-p: Internal functions

Jump to:   (  
A   B   C   E   F   K   L   M   N   P   Q   R   U   V   X  

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

A.3 Variables

Jump to:   *  
C   F   N   S  
Index Entry  Section

*
*fq-pprint-dispatch*: Exported special variables
*fq-readtable*: Exported special variables
*hash-dot-reader*: Internal special variables
*quasiquote-level*: Internal special variables

C
contents: Internal structures

F
form: Internal structures

N
n: Internal structures

S
Slot, contents: Internal structures
Slot, form: Internal structures
Slot, n: Internal structures
Special Variable, *fq-pprint-dispatch*: Exported special variables
Special Variable, *fq-readtable*: Exported special variables
Special Variable, *hash-dot-reader*: Internal special variables
Special Variable, *quasiquote-level*: Internal special variables

Jump to:   *  
C   F   N   S  

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

A.4 Data types

Jump to:   F   P   S   X  
Index Entry  Section

F
fare-quasiquote: The fare-quasiquote system
fare-quasiquote: The fare-quasiquote package

P
Package, fare-quasiquote: The fare-quasiquote package

S
Structure, x-n-vector: Internal structures
Structure, x-unquote: Internal structures
System, fare-quasiquote: The fare-quasiquote system

X
x-n-vector: Internal structures
x-unquote: Internal structures

Jump to:   F   P   S   X