The deferred Reference Manual

This is the deferred Reference Manual, version 0.9.0, generated automatically by Declt version 4.0 beta 2 "William Riker" on Mon Feb 26 16:15:54 2024 GMT+0.

Table of Contents


1 Introduction


2 Systems

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


2.1 deferred

A simple library allowing you to write code using deferred libraries.

Maintainer

Yukari Hafner <>

Author

Yukari Hafner <>

Home Page

https://Shinmera.github.io/deferred//

Source Control

(GIT https://github.com/Shinmera/deferred/.git)

Bug Tracker

https://github.com/Shinmera/deferred//issues

License

zlib

Version

0.9.0

Dependency

named-readtables (system).

Source

deferred.asd.

Child Components

3 Files

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


3.1 Lisp


3.1.1 deferred/deferred.asd

Source

deferred.asd.

Parent Component

deferred (system).

ASDF Systems

deferred.


3.1.2 deferred/package.lisp

Source

deferred.asd.

Parent Component

deferred (system).

Packages

deferred.


3.1.3 deferred/deferred.lisp

Dependency

package.lisp (file).

Source

deferred.asd.

Parent Component

deferred (system).

Public Interface
Internals

4 Packages

Packages are listed by definition order.


4.1 deferred

Source

package.lisp.

Nickname

org.tymoonnext.deferred

Use List

common-lisp.

Public Interface
Internals

5 Definitions

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


5.1 Public Interface


5.1.1 Special variables

Special Variable: *deferred-package*

The default package to use for deferred symbols.

Package

deferred.

Source

deferred.lisp.


5.1.2 Macros

Macro: when-packages (packages &body body)

Similar to WITH-DEFERRED-LIBRARY, except to be used to compile optional code.

The macro returns the transformed body if it can find all packages, otherwise NIL.

Package

deferred.

Source

deferred.lisp.

Macro: with-deferred-library ((asdf-system &key package if-not-loaded) &body body)

Turns the body into one capable of using deferred symbols.

Specifying deferred symbols works just like other symbols, except prefixing them with #^ . If the #^ reader macro has been overwritten in the standard readtable, please use (named-readtables:in-readtable :deferred)

ASDF-SYSTEM — An ASDF system designator.
PACKAGE — A package designator to use as the default package for deferred symbols. IF-NOT-LOADED ::= NIL | :QUICKLOAD | :LOAD | :AUTO | T
NIL will simply skip executing the body if the library has not been loaded. :LOAD will try to use ASDF:LOAD-SYSTEM and :QUICKLISP QL:QUICKLOAD.
:AUTO or T will try to do the right thing by checking for Quicklisp and ASDF presence first. If neither can be found, an error is signalled. If the loading operation fails, a warning is signalled and the body is NOT executed.

The only place I can think of that deferred symbols are currently not supported for is SETF accessors. This is left out since there’s no way to defer SETF-expanders to runtime.
You can still SETF symbol-values (special variables f.e.), but an error is signalled if
a deferred function is used within SETF.

Package

deferred.

Source

deferred.lisp.


5.1.3 Generic functions

Generic Function: process (thing)

Processes THING to transform all deferred symbols within into their proper representations.

Package

deferred.

Source

deferred.lisp.

Methods
Method: process (thing)
Method: process ((list list))
Generic Function: process-compile (thing)

Processes THING to transform all deferred symbols within into their proper compile-able representations.

Package

deferred.

Source

deferred.lisp.

Methods
Method: process-compile (thing)
Method: process-compile ((list list))

5.2 Internals


5.2.1 Special variables

Special Variable: *identifier-symbol*

Symbol used at the beginning of a list to identify a deferred symbol construct. READ-DEFERRED and PROCESS use these to handle the transformations.

Package

deferred.

Source

deferred.lisp.


5.2.2 Ordinary functions

Function: read-deferred (s a c)

Reads a deferred symbol from the reader stream and outputs the appropriate data structure.

Package

deferred.

Source

deferred.lisp.

Function: terminating-p (char)

Returns NIL if the character is not considered to be a symbol-terminating character.

Package

deferred.

Source

deferred.lisp.

Function: transform-token (token-stream)

Transforms the TOKEN-STREAM into the proper stream, minding the current READTABLE-CASE.

Package

deferred.

Source

deferred.lisp.


Appendix A Indexes


A.1 Concepts