The sandalphon.lambda-list Reference Manual

Table of Contents

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

The sandalphon.lambda-list Reference Manual

This is the sandalphon.lambda-list Reference Manual, version 0.1, generated automatically by Declt version 2.4 patchlevel 1 "Will Decker" on Fri May 24 09:44:25 2019 GMT+0.


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

1 Introduction

This is a library for manipulating and using general Common Lisp lambda lists. Unlike other utilities, such as ALEXANDRIA:PARSE-ORDINARY-LAMBDA-LIST, this library is general and beefy enough to handle all the different types of lambda lists listed in section 3.4 of the standard. It also allows defining your own grammars, clause types, etc.

The two basic components of this library are parsing and binding generation. Parsing turns a lambda list, like (a b &key c d), and a grammar for lambda lists into an object of class LAMBDA-LIST. Binding generation takes such an object and a series of forms, and returns a series of bindings and declarations suitable for CL:LET* that implement the lambda list binding to the values of those forms.

The two main entry points to these components are PARSE-LAMBDA-LIST and GENERATE-BINDINGS. The GENERATE-LET* function takes care of the common use of GENERATE-BINDINGS to generate a LET* form. As an example of their use, this is how you would transform a lambda form (3.1.2.1.2.4) into a LET* form:

(destructuring-bind ((lambda lambda-list &body body)
                     &rest arguments)
    form
  (declare (ignore lambda))
  (generate-let* (parse-lambda-list lambda-list *ordinary-lambda-list*)
	     body
	     arguments))

More complete documentation below and in docstrings.

Basic use

Function PARSE-LAMBDA-LIST

Syntax:

parse-lambda-list lambda-list grammar-spec &rest initargs &key safe

=> lambda-list-object

lambda-list is something parseable (i.e., that corresponds to a grammar). grammar-specs are explained below in "Grammars", or you can just use one of the pre-defined ones. Initargs are to the lambda list object as well as clause objects; currently the only one defined is :SAFE, which determines whether the binding form for a lambda list follows the restrictions on "safe code" (3.5). Note to self: move that out of parsing.

lambda-list-object is an object of class LAMBDA-LIST suitable for generating bindings.

Function GENERATE-BINDINGS

Syntax:

generate-bindings lambda-list &rest forms

=> bindings, declarations

lambda-list is an object of class LAMBDA-LIST. forms are any lisp forms. bindings is a list of let* bindings, and declarations is a list of declarations intended to be bound in a let* form.

This function does the basic work of generating bindings from a lambda list.

The forms argument takes some explanation. An ordinary lambda list conceptually binds to one thing, a list of arguments. If all lambda lists were like this, forms would be one form, that list. Some lambda lists, however - the macro-related ones - actually bind to two different things, a list of arguments and a separate "environment" argument - that necessitates some complication.

This is to say, if ll is an ordinary lambda list, you would generate bindings with (generate-bindings ll args). But if ll is a macro lambda list, you would generate bindings with (generate-bindings ll form env).

Things are also complicated by the fact that some lambda lists do not bind the same conceptual things. Above, the ordinary lambda list binds to "args", but the macro one binds to "form", because a macro function receives the entire macro form as an argument, not just the arguments to a macro form.

Function GENERATE-LET

Syntax:

generate-let lambda-list body &rest forms

=> form

A convenience function around generate-bindings, for the common case that you just want to wrap a body in the appropriate let. Returns `(let* ,bindings ,@declarations ,@body) where bindings and declarations are the result of generate-bindings.

Standard grammars

All the lambda list types specified in CLHS 3.4 are available, except for generic function and boa lambda lists, which are not used for binding. (Could add if wanted; file an issue.) Just pass these as arguments to parse-lambda-list:

Defining your own lambda list grammars

Past here is for customization only. If you are fine with being able to parse the lambda lists defined in the standard, don't worry about this.

Clauses

If you want your own lambda lists, you want to deal with clauses. Both parsing and binding generation protocols are oriented around clauses.

Lambda lists are composed of "clauses". Each clause is zero or more specifications of variables which are all bound similarly, and usually correspond to a lambda list keyword. For example, in "(a &optional (b 3) &rest x &key c (d a))", there are four clauses: a required variable clause binding a, an &optional clause binding b, a &rest clause binding x, and a &key clause binding c and d.

Clauses exist both in the parsing and binding generation stages of this library, and the same classes pull double duty.

The abstract overlording class is CLAUSE. All clauses have a list of keywords (initarg :keywords), used for parsing, e.g. in a macro lambda list, the &rest clause has keywords &rest and &body.

Note that if your lambda lists have a clause that doesn't have an associated lambda list keyword - like the required parameters in an ordinary lambda list - the list of keywords should include nil. (If you want nil as a lambda list keyword, too bad I guess. File an issue.)

Two more abstract classes under this exist, SINGLETON-CLAUSE and MULTIPLE-CLAUSE. A singleton-clause is one that allows only one variable, like &rest. A multiple-clause is one that allows multiple variables, like &key. A few functions have multiple- versions for running through multiple-clauses.

singleton-clauses have a 'spec' slot, while multiple-clauses have a 'specs' slot, which is unsurprisingly a list of specs. A spec is just a variable specification - for a required variable it's just the symbol name, for an &optional it's (var default var-p), etc. The specs should be normalized in some way, but that's up to you, since you'll be the one turning them into bindings.

If the lambda list is destructuring, specs may be whole other LAMBDA-LIST objects.

Furthermore there are two mixins, DEFAULTING-CLAUSE and DESTRUCTURING-CLAUSE. A defaulting-clause allows there to be no argument associated to the variable, in which case a default value is used - &optional. A destructuring-clause allows destructuring, i.e. nested lambda lists, as described in CLHS 3.4.4.1.

The concrete clause classes are regular-clause, optional-clause, etc. Some of distinct destructuring versions which are basically the same but for the mixin.

If you want to define your own clause, you might want to specify your own :initform for the keywords.

Additional initargs used by the predefined clauses are as follows.

&whole clauses have :map, which specify how the rest of the lambda list should be derived from the &whole argument; for a macro lambda list this is CDR, and for a compiler macro lambda list it is the special function COMPILER-MACRO-ARGUMENTS.

defaulting-clauses have :default-default, which can be used to specify what the default value for a variable is if the lambda list itself does not specify a default. The default default default is nil. This is used in deftype lambda lists, which have a :default-default *.

destructuring-clauses have :destructure. :destructure specifies a grammar that is used to parse recursive lambda lists. In most cases, this necessitates a separate destructuring-whatever-lambda-list, since the sub-lambda-lists have different grammars (e.g. sub macro lambda lists do not allow &environment).

Grammars

Frankly the grammar creation is sort of a mess. I'm sorry! Lambda lists have weird grammars. In the future I will probably rip out all the crap I wrote and use a proper generated recursive descent parser if this library gets any use.

Anyway. Grammars are specified by lists. The elements of these lists are clause specifiers. A clause specifier is either a class specifier or a list (class-specifier ...plist...).

When a lambda list is parsed, the grammar is first turned into a prototype lambda list by instantiating clause objects as by make-instance. For example, if your grammar was (regular-clause aux-clause), the prototype would be (# #). If the clause specifier includes a plist, that plist is used as initargs to make-instance, with two exceptions: :data-destructure and :anywhere are treated specially by the parser and scrubbed from the initargs.

:data-destructure in a clause specifier indicates that if a lambda list is dotted, the variable specification after the dot is an instance of this clause. For example a &rest clause has this in a macro-lambda-list.

:anywhere indicates that the clause can occur out of order and occur anywhere after the first clause. This is for &environment. The restriction to not being the first clause is not great.

Not counting :anywhere, the grammar indicates the clauses in order. A clause can be elided but cannot appear in the wrong place.

Parsing clauses

There are two generic functions you can customize to control parsing: CLAUSE-PARSE and MULTIPLE-CLAUSE-PARSE.

CLAUSE-PARSE receives a prototype clause, the current portion of the lambda list being parsed, and the whole prototype LAMBDA-LIST object. It should alter the clause object to match the lambda list, and return the unparsed remainder of the lambda list.

If your clause is a singleton-clause, you don't need to specialize this.

If you have a multiple-clause, you probably want to use the default multiple-clause parser on the whole clause except the lambda list keyword, so you do

(defmethod clause-parse ((clause my-clause) list lambda-list)
  (call-next-method clause (rest list) lambda-list))

The default multiple-clause parser essentially calls MULTIPLE-CLAUSE-PARSE repeatedly. For an example of something more complicated, check the method on key-clause.

MULTIPLE-CLAUSE-PARSE receives a prototype clause, a single possible spec, and the lambda list as a whole. It should return the normalized spec, or, if the spec turns out not to be a spec (i.e. it's the start of the next clause) it should return NIL. Check the built-in methods.

Making bindings from clauses

TODO


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 sandalphon.lambda-list

Author

Bike <aeshtaer@gmail.com>

License

WTFPL

Description

Lambda list parsing and usage

Version

0.1

Source

sandalphon.lambda-list.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 sandalphon.lambda-list.asd

Location

sandalphon.lambda-list.asd

Systems

sandalphon.lambda-list (system)


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

3.1.2 sandalphon.lambda-list/package.lisp

Parent

sandalphon.lambda-list (system)

Location

package.lisp

Packages

sandalphon.lambda-list


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

3.1.3 sandalphon.lambda-list/classes.lisp

Dependency

package.lisp (file)

Parent

sandalphon.lambda-list (system)

Location

classes.lisp

Internal Definitions

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

3.1.4 sandalphon.lambda-list/parse.lisp

Dependencies
Parent

sandalphon.lambda-list (system)

Location

parse.lisp

Internal Definitions

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

3.1.5 sandalphon.lambda-list/standard-grammars.lisp

Dependency

package.lisp (file)

Parent

sandalphon.lambda-list (system)

Location

standard-grammars.lisp

Internal Definitions

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

3.1.6 sandalphon.lambda-list/binds.lisp

Dependencies
Parent

sandalphon.lambda-list (system)

Location

binds.lisp

Internal Definitions

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

3.1.7 sandalphon.lambda-list/unparse.lisp

Dependencies
Parent

sandalphon.lambda-list (system)

Location

unparse.lisp

Internal Definitions

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

4 Packages

Packages are listed by definition order.


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

4.1 sandalphon.lambda-list

Source

package.lisp (file)

Use List

common-lisp

Internal Definitions

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

5 Definitions

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


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

5.1 Internal definitions


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

5.1.1 Special variables

Special Variable: *compiler-macro-lambda-list*
Package

sandalphon.lambda-list

Source

standard-grammars.lisp (file)

Special Variable: *define-method-combination-lambda-list*
Package

sandalphon.lambda-list

Source

standard-grammars.lisp (file)

Special Variable: *define-modify-macro-lambda-list*
Package

sandalphon.lambda-list

Source

standard-grammars.lisp (file)

Special Variable: *defsetf-lambda-list*
Package

sandalphon.lambda-list

Source

standard-grammars.lisp (file)

Special Variable: *deftype-lambda-list*
Package

sandalphon.lambda-list

Source

standard-grammars.lisp (file)

Special Variable: *destructuring-deftype-lambda-list*
Package

sandalphon.lambda-list

Source

standard-grammars.lisp (file)

Special Variable: *destructuring-lambda-list*
Package

sandalphon.lambda-list

Source

standard-grammars.lisp (file)

Special Variable: *macro-lambda-list*
Package

sandalphon.lambda-list

Source

standard-grammars.lisp (file)

Special Variable: *ordinary-lambda-list*
Package

sandalphon.lambda-list

Source

standard-grammars.lisp (file)

Special Variable: *specialized-lambda-list*
Package

sandalphon.lambda-list

Source

standard-grammars.lisp (file)


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

5.1.2 Functions

Function: %parse-lambda-list LLIST GRAMMAR &rest INITARGS &key SAFE
Package

sandalphon.lambda-list

Source

parse.lisp (file)

Function: compiler-macro-arguments FORM
Package

sandalphon.lambda-list

Source

standard-grammars.lisp (file)

Function: generate-bindings LLIST &rest FORMS
Package

sandalphon.lambda-list

Source

binds.lisp (file)

Function: generate-let* LLIST BODY &rest FORMS
Package

sandalphon.lambda-list

Source

binds.lisp (file)

Function: grammar-clean-keywords LIST

Takes a plist of key/values, cleans out grammar specials, and returns something that should be fine for MAKE-INSTANCE and friends. Specials are presently :DATA-DESTRUCTURE, :ANYWHERE.

Package

sandalphon.lambda-list

Source

parse.lisp (file)

Function: key-binds KEY VAR -P DEFAULT FORM
Package

sandalphon.lambda-list

Source

binds.lisp (file)

Function: make-grammar GRAMMAR-SPEC &rest MORE-KEYS &key SAFE

Takes a grammar specification and makes it into a fresh "grammar", which is an internal thing passed to %parse-lambda-list that is full of clauses subject to side effects. MORE-KEYS is a plist of initialization arguments to all clauses.

Package

sandalphon.lambda-list

Source

parse.lisp (file)

Function: make-key SYMBOL

For &key parsing.

Package

sandalphon.lambda-list

Source

parse.lisp (file)

Function: maybe-unparse LLIST
Package

sandalphon.lambda-list

Source

unparse.lisp (file)

Function: optional-binds VAR -P DEFAULT FORM
Package

sandalphon.lambda-list

Source

binds.lisp (file)

Function: parse-destructure CLAUSE LLIST GRAMMAR-NAME

Helper function for destructuring parameters. Given a clause to take initargs from, something that’s maybe a lambda list, and the name of a grammar, parses.

Package

sandalphon.lambda-list

Source

parse.lisp (file)

Function: parse-lambda-list LAMBDA-LIST GRAMMAR-SPEC &rest INITARGS &key SAFE

Given a lambda list, initargs for it, and a grammar specification, returns a LAMBDA-LIST object.
A grammar specification is a list of clause specifications. A clause specification is either a class specifier, or a list (class-specifier &key).
The grammar specification is simply based on clauses earlier in the list having to occur before clauses later in the list. All clauses are considered optional.
The keys and values in the list are passed unevaluated to MAKE-INSTANCE.
Certain keys have special meanings to the grammar itself. These are removed before they can be passed to MAKE-INSTANCE. They are as follows:
* :DATA-DESTRUCTURE indicates that a dotted list indicates this kind of clause. E.g., in parsing (foo bar . baz), if there was a &rest clause in the grammar with :DATA-DESTRUCTURE, the result would be the same as from (foo bar &rest baz).
* :ANYWHERE indicates that the position of this clause in the grammar is unimportant, and that this clause can be anywhere in the lambda list, except, for bad reasons, before the first clause. This is used for &environment clauses, which cannot be before &whole.

The keys are arguments to the lambda-list and clause creation that are not part of the grammar. Presently the only one is SAFE, controlling whether extra code is inserted to ensure conforming code and more helpful error messages.

EXAMPLE: A lambda-list like an ordinary lambda-list but with keys having :no-value as a default if no default is explicitly given would have the grammar specification (REGULAR-CLAUSE OPTIONAL-CLAUSE REST-CLAUSE (KEY-CLAUSE :DEFAULT-DEFAULT :NO-VALUE) AUX-CLAUSE).

Package

sandalphon.lambda-list

Source

parse.lisp (file)

Function: regular-binds NAME FORM
Package

sandalphon.lambda-list

Source

binds.lisp (file)


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

5.1.3 Generic functions

Generic Function: clause-binds CLAUSE FORMS
Package

sandalphon.lambda-list

Source

binds.lisp (file)

Methods
Method: clause-binds (CLAUSE rest-clause) FORMS
Method: clause-binds (CLAUSE key-clause) FORMS
Method: clause-binds (CLAUSE multiple-clause) FORMS
Method: clause-binds (CLAUSE environment-clause) FORMS
Method: clause-binds (CLAUSE whole-clause) FORMS
Generic Function: clause-default-default OBJECT
Generic Function: (setf clause-default-default) NEW-VALUE OBJECT
Package

sandalphon.lambda-list

Methods
Method: clause-default-default (DEFAULTING-CLAUSE defaulting-clause)

automatically generated reader method

Source

classes.lisp (file)

Method: (setf clause-default-default) NEW-VALUE (DEFAULTING-CLAUSE defaulting-clause)

automatically generated writer method

Source

classes.lisp (file)

Generic Function: clause-keywords OBJECT
Generic Function: (setf clause-keywords) NEW-VALUE OBJECT
Package

sandalphon.lambda-list

Methods
Method: clause-keywords (CLAUSE clause)

automatically generated reader method

Source

classes.lisp (file)

Method: (setf clause-keywords) NEW-VALUE (CLAUSE clause)

automatically generated writer method

Source

classes.lisp (file)

Generic Function: clause-parse CLAUSE LIST LAMBDA-LIST

Parse an entire clause. Side-effect the results into CLAUSE, and return a list with the clause consumed. For example, given (&whole foo bar baz), the &whole clause parser would return (bar baz).

Package

sandalphon.lambda-list

Source

parse.lisp (file)

Methods
Method: clause-parse (CLAUSE aux-clause) LIST LLIST
Method: clause-parse (CLAUSE destructuring-key-clause) LIST LLIST
Method: clause-parse (CLAUSE key-clause) LIST LLIST
Method: clause-parse (CLAUSE destructuring-optional-clause) LIST LLIST
Method: clause-parse (CLAUSE optional-clause) LIST LLIST
Method: clause-parse (CLAUSE multiple-clause) LIST LLIST
Method: clause-parse (CLAUSE singleton-clause) LIST LLIST
Generic Function: clause-safe OBJECT
Generic Function: (setf clause-safe) NEW-VALUE OBJECT
Package

sandalphon.lambda-list

Methods
Method: clause-safe (CLAUSE clause)

automatically generated reader method

Source

classes.lisp (file)

Method: (setf clause-safe) NEW-VALUE (CLAUSE clause)

automatically generated writer method

Source

classes.lisp (file)

Generic Function: clause-spec OBJECT
Generic Function: (setf clause-spec) NEW-VALUE OBJECT
Package

sandalphon.lambda-list

Methods
Method: clause-spec (SINGLETON-CLAUSE singleton-clause)

automatically generated reader method

Source

classes.lisp (file)

Method: (setf clause-spec) NEW-VALUE (SINGLETON-CLAUSE singleton-clause)

automatically generated writer method

Source

classes.lisp (file)

Generic Function: clause-unparse CLAUSE
Package

sandalphon.lambda-list

Source

unparse.lisp (file)

Methods
Method: clause-unparse (CLAUSE key-clause)
Method: clause-unparse (CLAUSE multiple-clause)
Method: clause-unparse (CLAUSE singleton-clause)
Generic Function: destructuring-clause-grammar OBJECT
Generic Function: (setf destructuring-clause-grammar) NEW-VALUE OBJECT
Package

sandalphon.lambda-list

Methods
Method: destructuring-clause-grammar (DESTRUCTURING-CLAUSE destructuring-clause)

automatically generated reader method

Source

classes.lisp (file)

Method: (setf destructuring-clause-grammar) NEW-VALUE (DESTRUCTURING-CLAUSE destructuring-clause)

automatically generated writer method

Source

classes.lisp (file)

Generic Function: key-clause-aok-p OBJECT
Generic Function: (setf key-clause-aok-p) NEW-VALUE OBJECT
Package

sandalphon.lambda-list

Methods
Method: key-clause-aok-p (DESTRUCTURING-KEY-CLAUSE destructuring-key-clause)

automatically generated reader method

Source

classes.lisp (file)

Method: (setf key-clause-aok-p) NEW-VALUE (DESTRUCTURING-KEY-CLAUSE destructuring-key-clause)

automatically generated writer method

Source

classes.lisp (file)

Method: key-clause-aok-p (KEY-CLAUSE key-clause)

automatically generated reader method

Source

classes.lisp (file)

Method: (setf key-clause-aok-p) NEW-VALUE (KEY-CLAUSE key-clause)

automatically generated writer method

Source

classes.lisp (file)

Generic Function: lambda-list-clauses OBJECT
Generic Function: (setf lambda-list-clauses) NEW-VALUE OBJECT
Package

sandalphon.lambda-list

Methods
Method: lambda-list-clauses (LAMBDA-LIST lambda-list)

automatically generated reader method

Source

classes.lisp (file)

Method: (setf lambda-list-clauses) NEW-VALUE (LAMBDA-LIST lambda-list)

automatically generated writer method

Source

classes.lisp (file)

Generic Function: lambda-list-keywords LAMBDA-LIST
Package

sandalphon.lambda-list

Source

classes.lisp (file)

Methods
Method: lambda-list-keywords (LAMBDA-LIST lambda-list)
Generic Function: lambda-list-safe OBJECT
Generic Function: (setf lambda-list-safe) NEW-VALUE OBJECT
Package

sandalphon.lambda-list

Methods
Method: lambda-list-safe (LAMBDA-LIST lambda-list)

automatically generated reader method

Source

classes.lisp (file)

Method: (setf lambda-list-safe) NEW-VALUE (LAMBDA-LIST lambda-list)

automatically generated writer method

Source

classes.lisp (file)

Generic Function: lambda-list-unparse LAMBDA-LIST
Package

sandalphon.lambda-list

Source

unparse.lisp (file)

Methods
Method: lambda-list-unparse (LAMBDA-LIST lambda-list)
Generic Function: multiple-clause-binds CLAUSE SPEC FORMS
Package

sandalphon.lambda-list

Source

binds.lisp (file)

Methods
Method: multiple-clause-binds (CLAUSE aux-clause) SPEC FORMS
Method: multiple-clause-binds (CLAUSE destructuring-key-clause) SPEC FORMS
Method: multiple-clause-binds (CLAUSE key-clause) SPEC FORMS
Method: multiple-clause-binds (CLAUSE destructuring-optional-clause) SPEC FORMS
Method: multiple-clause-binds (CLAUSE optional-clause) SPEC FORMS
Method: multiple-clause-binds (CLAUSE destructuring-regular-clause) SPEC FORMS
Method: multiple-clause-binds (CLAUSE specialized-regular-clause) SPEC FORMS
Method: multiple-clause-binds (CLAUSE regular-clause) SPEC FORMS
Generic Function: multiple-clause-parse CLAUSE SPEC LAMBDA-LIST

Parse an individual specifier for a multiple-clause. The return format is particular to what the particular clause class expects.

Package

sandalphon.lambda-list

Source

parse.lisp (file)

Methods
Method: multiple-clause-parse (CLAUSE aux-clause) SPEC LLIST
Method: multiple-clause-parse (CLAUSE destructuring-key-clause) SPEC LLIST
Method: multiple-clause-parse (CLAUSE key-clause) SPEC LLIST
Method: multiple-clause-parse (CLAUSE destructuring-optional-clause) SPEC LLIST
Method: multiple-clause-parse (CLAUSE optional-clause) SPEC LLIST
Method: multiple-clause-parse (CLAUSE destructuring-regular-clause) SPEC LLIST
Method: multiple-clause-parse (CLAUSE specialized-regular-clause) SPEC LLIST
Method: multiple-clause-parse (CLAUSE regular-clause) SPEC LLIST
Generic Function: multiple-clause-specs OBJECT
Generic Function: (setf multiple-clause-specs) NEW-VALUE OBJECT
Package

sandalphon.lambda-list

Methods
Method: multiple-clause-specs (MULTIPLE-CLAUSE multiple-clause)

automatically generated reader method

Source

classes.lisp (file)

Method: (setf multiple-clause-specs) NEW-VALUE (MULTIPLE-CLAUSE multiple-clause)

automatically generated writer method

Source

classes.lisp (file)

Generic Function: multiple-clause-unparse-spec CLAUSE SPEC
Package

sandalphon.lambda-list

Source

unparse.lisp (file)

Methods
Method: multiple-clause-unparse-spec (CLAUSE destructuring-key-clause) SPEC
Method: multiple-clause-unparse-spec (CLAUSE destructuring-optional-clause) SPEC
Method: multiple-clause-unparse-spec (CLAUSE destructuring-regular-clause) SPEC
Method: multiple-clause-unparse-spec (CLAUSE aux-clause) SPEC
Method: multiple-clause-unparse-spec (CLAUSE key-clause) SPEC
Method: multiple-clause-unparse-spec (CLAUSE optional-clause) SPEC
Method: multiple-clause-unparse-spec (CLAUSE specialized-regular-clause) SPEC
Method: multiple-clause-unparse-spec (CLAUSE regular-clause) SPEC
Generic Function: whole-map OBJECT
Generic Function: (setf whole-map) NEW-VALUE OBJECT
Package

sandalphon.lambda-list

Methods
Method: whole-map (WHOLE-CLAUSE whole-clause)

automatically generated reader method

Source

classes.lisp (file)

Method: (setf whole-map) NEW-VALUE (WHOLE-CLAUSE whole-clause)

automatically generated writer method

Source

classes.lisp (file)


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

5.1.4 Classes

Class: aux-clause ()
Package

sandalphon.lambda-list

Source

classes.lisp (file)

Direct superclasses
Direct methods
Direct slots
Slot: keywords
Initform

(quote (&aux))

Class: clause ()
Package

sandalphon.lambda-list

Source

classes.lisp (file)

Direct superclasses

standard-object (class)

Direct subclasses
Direct methods
Direct slots
Slot: keywords
Initargs

:keywords

Readers

clause-keywords (generic function)

Writers

(setf clause-keywords) (generic function)

Slot: safety
Initargs

:safe

Initform

t

Readers

clause-safe (generic function)

Writers

(setf clause-safe) (generic function)

Class: defaulting-clause ()
Package

sandalphon.lambda-list

Source

classes.lisp (file)

Direct superclasses

clause (class)

Direct subclasses
Direct methods
Direct slots
Slot: default-default
Initargs

:default-default

Readers

clause-default-default (generic function)

Writers

(setf clause-default-default) (generic function)

Class: destructuring-clause ()
Package

sandalphon.lambda-list

Source

classes.lisp (file)

Direct superclasses

clause (class)

Direct subclasses
Direct methods
Direct slots
Slot: grammar-name
Initargs

:destructure

Readers

destructuring-clause-grammar (generic function)

Writers

(setf destructuring-clause-grammar) (generic function)

Class: destructuring-key-clause ()
Package

sandalphon.lambda-list

Source

classes.lisp (file)

Direct superclasses
Direct methods
Direct slots
Slot: keywords
Initform

(quote (&key &allow-other-keys))

Slot: aok-p
Initargs

:aok-p

Readers

key-clause-aok-p (generic function)

Writers

(setf key-clause-aok-p) (generic function)

Class: destructuring-optional-clause ()
Package

sandalphon.lambda-list

Source

classes.lisp (file)

Direct superclasses
Direct methods
Direct slots
Slot: keywords
Initform

(quote (&optional))

Class: destructuring-regular-clause ()
Package

sandalphon.lambda-list

Source

classes.lisp (file)

Direct superclasses
Direct methods
Direct slots
Slot: keywords
Initform

(quote (nil))

Class: environment-clause ()
Package

sandalphon.lambda-list

Source

classes.lisp (file)

Direct superclasses

singleton-clause (class)

Direct methods

clause-binds (method)

Direct slots
Slot: keywords
Initform

(quote (&environment))

Class: key-clause ()
Package

sandalphon.lambda-list

Source

classes.lisp (file)

Direct superclasses
Direct methods
Direct slots
Slot: keywords
Initform

(quote (&key &allow-other-keys))

Slot: aok-p
Initargs

:aok-p

Readers

key-clause-aok-p (generic function)

Writers

(setf key-clause-aok-p) (generic function)

Class: lambda-list ()
Package

sandalphon.lambda-list

Source

classes.lisp (file)

Direct superclasses

standard-object (class)

Direct methods
Direct slots
Slot: clauses
Initargs

:clauses

Readers

lambda-list-clauses (generic function)

Writers

(setf lambda-list-clauses) (generic function)

Slot: safety
Initargs

:safe

Initform

t

Readers

lambda-list-safe (generic function)

Writers

(setf lambda-list-safe) (generic function)

Class: multiple-clause ()

A clause that contains multiple specifiers, which are treated identically (by MULTIPLE-CLAUSE-BINDS), and which are bound left-to-right.

Package

sandalphon.lambda-list

Source

classes.lisp (file)

Direct superclasses

clause (class)

Direct subclasses
Direct methods
Direct slots
Slot: specs
Initargs

:specs

Readers

multiple-clause-specs (generic function)

Writers

(setf multiple-clause-specs) (generic function)

Class: optional-clause ()
Package

sandalphon.lambda-list

Source

classes.lisp (file)

Direct superclasses
Direct methods
Direct slots
Slot: keywords
Initform

(quote (&optional))

Class: regular-clause ()
Package

sandalphon.lambda-list

Source

classes.lisp (file)

Direct superclasses

multiple-clause (class)

Direct methods
Direct slots
Slot: keywords
Initform

(quote (nil))

Class: rest-clause ()
Package

sandalphon.lambda-list

Source

classes.lisp (file)

Direct superclasses

singleton-clause (class)

Direct methods

clause-binds (method)

Direct slots
Slot: keywords
Initform

(quote (&rest))

Class: singleton-clause ()

A clause that only contains one parameter, a symbol.

Package

sandalphon.lambda-list

Source

classes.lisp (file)

Direct superclasses

clause (class)

Direct subclasses
Direct methods
Direct slots
Slot: spec
Initargs

:spec

Readers

clause-spec (generic function)

Writers

(setf clause-spec) (generic function)

Class: specialized-regular-clause ()
Package

sandalphon.lambda-list

Source

classes.lisp (file)

Direct superclasses

multiple-clause (class)

Direct methods
Direct slots
Slot: keywords
Initform

(quote (nil))

Class: whole-clause ()
Package

sandalphon.lambda-list

Source

classes.lisp (file)

Direct superclasses

singleton-clause (class)

Direct methods
Direct slots
Slot: keywords
Initform

(quote (&whole))

Slot: map
Initargs

:map

Initform

(quote identity)

Readers

whole-map (generic function)

Writers

(setf whole-map) (generic function)


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

Appendix A Indexes


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

A.1 Concepts

Jump to:   F   L   S  
Index Entry  Section

F
File, Lisp, sandalphon.lambda-list.asd: The sandalphon<dot>lambda-list<dot>asd file
File, Lisp, sandalphon.lambda-list/binds.lisp: The sandalphon<dot>lambda-list/binds<dot>lisp file
File, Lisp, sandalphon.lambda-list/classes.lisp: The sandalphon<dot>lambda-list/classes<dot>lisp file
File, Lisp, sandalphon.lambda-list/package.lisp: The sandalphon<dot>lambda-list/package<dot>lisp file
File, Lisp, sandalphon.lambda-list/parse.lisp: The sandalphon<dot>lambda-list/parse<dot>lisp file
File, Lisp, sandalphon.lambda-list/standard-grammars.lisp: The sandalphon<dot>lambda-list/standard-grammars<dot>lisp file
File, Lisp, sandalphon.lambda-list/unparse.lisp: The sandalphon<dot>lambda-list/unparse<dot>lisp file

L
Lisp File, sandalphon.lambda-list.asd: The sandalphon<dot>lambda-list<dot>asd file
Lisp File, sandalphon.lambda-list/binds.lisp: The sandalphon<dot>lambda-list/binds<dot>lisp file
Lisp File, sandalphon.lambda-list/classes.lisp: The sandalphon<dot>lambda-list/classes<dot>lisp file
Lisp File, sandalphon.lambda-list/package.lisp: The sandalphon<dot>lambda-list/package<dot>lisp file
Lisp File, sandalphon.lambda-list/parse.lisp: The sandalphon<dot>lambda-list/parse<dot>lisp file
Lisp File, sandalphon.lambda-list/standard-grammars.lisp: The sandalphon<dot>lambda-list/standard-grammars<dot>lisp file
Lisp File, sandalphon.lambda-list/unparse.lisp: The sandalphon<dot>lambda-list/unparse<dot>lisp file

S
sandalphon.lambda-list.asd: The sandalphon<dot>lambda-list<dot>asd file
sandalphon.lambda-list/binds.lisp: The sandalphon<dot>lambda-list/binds<dot>lisp file
sandalphon.lambda-list/classes.lisp: The sandalphon<dot>lambda-list/classes<dot>lisp file
sandalphon.lambda-list/package.lisp: The sandalphon<dot>lambda-list/package<dot>lisp file
sandalphon.lambda-list/parse.lisp: The sandalphon<dot>lambda-list/parse<dot>lisp file
sandalphon.lambda-list/standard-grammars.lisp: The sandalphon<dot>lambda-list/standard-grammars<dot>lisp file
sandalphon.lambda-list/unparse.lisp: The sandalphon<dot>lambda-list/unparse<dot>lisp file

Jump to:   F   L   S  

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

A.2 Functions

Jump to:   %   (  
C   D   F   G   K   L   M   O   P   R   W  
Index Entry  Section

%
%parse-lambda-list: Internal functions

(
(setf clause-default-default): Internal generic functions
(setf clause-default-default): Internal generic functions
(setf clause-keywords): Internal generic functions
(setf clause-keywords): Internal generic functions
(setf clause-safe): Internal generic functions
(setf clause-safe): Internal generic functions
(setf clause-spec): Internal generic functions
(setf clause-spec): Internal generic functions
(setf destructuring-clause-grammar): Internal generic functions
(setf destructuring-clause-grammar): Internal generic functions
(setf key-clause-aok-p): Internal generic functions
(setf key-clause-aok-p): Internal generic functions
(setf key-clause-aok-p): Internal generic functions
(setf lambda-list-clauses): Internal generic functions
(setf lambda-list-clauses): Internal generic functions
(setf lambda-list-safe): Internal generic functions
(setf lambda-list-safe): Internal generic functions
(setf multiple-clause-specs): Internal generic functions
(setf multiple-clause-specs): Internal generic functions
(setf whole-map): Internal generic functions
(setf whole-map): Internal generic functions

C
clause-binds: Internal generic functions
clause-binds: Internal generic functions
clause-binds: Internal generic functions
clause-binds: Internal generic functions
clause-binds: Internal generic functions
clause-binds: Internal generic functions
clause-default-default: Internal generic functions
clause-default-default: Internal generic functions
clause-keywords: Internal generic functions
clause-keywords: Internal generic functions
clause-parse: Internal generic functions
clause-parse: Internal generic functions
clause-parse: Internal generic functions
clause-parse: Internal generic functions
clause-parse: Internal generic functions
clause-parse: Internal generic functions
clause-parse: Internal generic functions
clause-parse: Internal generic functions
clause-safe: Internal generic functions
clause-safe: Internal generic functions
clause-spec: Internal generic functions
clause-spec: Internal generic functions
clause-unparse: Internal generic functions
clause-unparse: Internal generic functions
clause-unparse: Internal generic functions
clause-unparse: Internal generic functions
compiler-macro-arguments: Internal functions

D
destructuring-clause-grammar: Internal generic functions
destructuring-clause-grammar: Internal generic functions

F
Function, %parse-lambda-list: Internal functions
Function, compiler-macro-arguments: Internal functions
Function, generate-bindings: Internal functions
Function, generate-let*: Internal functions
Function, grammar-clean-keywords: Internal functions
Function, key-binds: Internal functions
Function, make-grammar: Internal functions
Function, make-key: Internal functions
Function, maybe-unparse: Internal functions
Function, optional-binds: Internal functions
Function, parse-destructure: Internal functions
Function, parse-lambda-list: Internal functions
Function, regular-binds: Internal functions

G
generate-bindings: Internal functions
generate-let*: Internal functions
Generic Function, (setf clause-default-default): Internal generic functions
Generic Function, (setf clause-keywords): Internal generic functions
Generic Function, (setf clause-safe): Internal generic functions
Generic Function, (setf clause-spec): Internal generic functions
Generic Function, (setf destructuring-clause-grammar): Internal generic functions
Generic Function, (setf key-clause-aok-p): Internal generic functions
Generic Function, (setf lambda-list-clauses): Internal generic functions
Generic Function, (setf lambda-list-safe): Internal generic functions
Generic Function, (setf multiple-clause-specs): Internal generic functions
Generic Function, (setf whole-map): Internal generic functions
Generic Function, clause-binds: Internal generic functions
Generic Function, clause-default-default: Internal generic functions
Generic Function, clause-keywords: Internal generic functions
Generic Function, clause-parse: Internal generic functions
Generic Function, clause-safe: Internal generic functions
Generic Function, clause-spec: Internal generic functions
Generic Function, clause-unparse: Internal generic functions
Generic Function, destructuring-clause-grammar: Internal generic functions
Generic Function, key-clause-aok-p: Internal generic functions
Generic Function, lambda-list-clauses: Internal generic functions
Generic Function, lambda-list-keywords: Internal generic functions
Generic Function, lambda-list-safe: Internal generic functions
Generic Function, lambda-list-unparse: Internal generic functions
Generic Function, multiple-clause-binds: Internal generic functions
Generic Function, multiple-clause-parse: Internal generic functions
Generic Function, multiple-clause-specs: Internal generic functions
Generic Function, multiple-clause-unparse-spec: Internal generic functions
Generic Function, whole-map: Internal generic functions
grammar-clean-keywords: Internal functions

K
key-binds: Internal functions
key-clause-aok-p: Internal generic functions
key-clause-aok-p: Internal generic functions
key-clause-aok-p: Internal generic functions

L
lambda-list-clauses: Internal generic functions
lambda-list-clauses: Internal generic functions
lambda-list-keywords: Internal generic functions
lambda-list-keywords: Internal generic functions
lambda-list-safe: Internal generic functions
lambda-list-safe: Internal generic functions
lambda-list-unparse: Internal generic functions
lambda-list-unparse: Internal generic functions

M
make-grammar: Internal functions
make-key: Internal functions
maybe-unparse: Internal functions
Method, (setf clause-default-default): Internal generic functions
Method, (setf clause-keywords): Internal generic functions
Method, (setf clause-safe): Internal generic functions
Method, (setf clause-spec): Internal generic functions
Method, (setf destructuring-clause-grammar): Internal generic functions
Method, (setf key-clause-aok-p): Internal generic functions
Method, (setf key-clause-aok-p): Internal generic functions
Method, (setf lambda-list-clauses): Internal generic functions
Method, (setf lambda-list-safe): Internal generic functions
Method, (setf multiple-clause-specs): Internal generic functions
Method, (setf whole-map): Internal generic functions
Method, clause-binds: Internal generic functions
Method, clause-binds: Internal generic functions
Method, clause-binds: Internal generic functions
Method, clause-binds: Internal generic functions
Method, clause-binds: Internal generic functions
Method, clause-default-default: Internal generic functions
Method, clause-keywords: Internal generic functions
Method, clause-parse: Internal generic functions
Method, clause-parse: Internal generic functions
Method, clause-parse: Internal generic functions
Method, clause-parse: Internal generic functions
Method, clause-parse: Internal generic functions
Method, clause-parse: Internal generic functions
Method, clause-parse: Internal generic functions
Method, clause-safe: Internal generic functions
Method, clause-spec: Internal generic functions
Method, clause-unparse: Internal generic functions
Method, clause-unparse: Internal generic functions
Method, clause-unparse: Internal generic functions
Method, destructuring-clause-grammar: Internal generic functions
Method, key-clause-aok-p: Internal generic functions
Method, key-clause-aok-p: Internal generic functions
Method, lambda-list-clauses: Internal generic functions
Method, lambda-list-keywords: Internal generic functions
Method, lambda-list-safe: Internal generic functions
Method, lambda-list-unparse: Internal generic functions
Method, multiple-clause-binds: Internal generic functions
Method, multiple-clause-binds: Internal generic functions
Method, multiple-clause-binds: Internal generic functions
Method, multiple-clause-binds: Internal generic functions
Method, multiple-clause-binds: Internal generic functions
Method, multiple-clause-binds: Internal generic functions
Method, multiple-clause-binds: Internal generic functions
Method, multiple-clause-binds: Internal generic functions
Method, multiple-clause-parse: Internal generic functions
Method, multiple-clause-parse: Internal generic functions
Method, multiple-clause-parse: Internal generic functions
Method, multiple-clause-parse: Internal generic functions
Method, multiple-clause-parse: Internal generic functions
Method, multiple-clause-parse: Internal generic functions
Method, multiple-clause-parse: Internal generic functions
Method, multiple-clause-parse: Internal generic functions
Method, multiple-clause-specs: Internal generic functions
Method, multiple-clause-unparse-spec: Internal generic functions
Method, multiple-clause-unparse-spec: Internal generic functions
Method, multiple-clause-unparse-spec: Internal generic functions
Method, multiple-clause-unparse-spec: Internal generic functions
Method, multiple-clause-unparse-spec: Internal generic functions
Method, multiple-clause-unparse-spec: Internal generic functions
Method, multiple-clause-unparse-spec: Internal generic functions
Method, multiple-clause-unparse-spec: Internal generic functions
Method, whole-map: Internal generic functions
multiple-clause-binds: Internal generic functions
multiple-clause-binds: Internal generic functions
multiple-clause-binds: Internal generic functions
multiple-clause-binds: Internal generic functions
multiple-clause-binds: Internal generic functions
multiple-clause-binds: Internal generic functions
multiple-clause-binds: Internal generic functions
multiple-clause-binds: Internal generic functions
multiple-clause-binds: Internal generic functions
multiple-clause-parse: Internal generic functions
multiple-clause-parse: Internal generic functions
multiple-clause-parse: Internal generic functions
multiple-clause-parse: Internal generic functions
multiple-clause-parse: Internal generic functions
multiple-clause-parse: Internal generic functions
multiple-clause-parse: Internal generic functions
multiple-clause-parse: Internal generic functions
multiple-clause-parse: Internal generic functions
multiple-clause-specs: Internal generic functions
multiple-clause-specs: Internal generic functions
multiple-clause-unparse-spec: Internal generic functions
multiple-clause-unparse-spec: Internal generic functions
multiple-clause-unparse-spec: Internal generic functions
multiple-clause-unparse-spec: Internal generic functions
multiple-clause-unparse-spec: Internal generic functions
multiple-clause-unparse-spec: Internal generic functions
multiple-clause-unparse-spec: Internal generic functions
multiple-clause-unparse-spec: Internal generic functions
multiple-clause-unparse-spec: Internal generic functions

O
optional-binds: Internal functions

P
parse-destructure: Internal functions
parse-lambda-list: Internal functions

R
regular-binds: Internal functions

W
whole-map: Internal generic functions
whole-map: Internal generic functions

Jump to:   %   (  
C   D   F   G   K   L   M   O   P   R   W  

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

A.3 Variables

Jump to:   *  
A   C   D   G   K   M   S  
Index Entry  Section

*
*compiler-macro-lambda-list*: Internal special variables
*define-method-combination-lambda-list*: Internal special variables
*define-modify-macro-lambda-list*: Internal special variables
*defsetf-lambda-list*: Internal special variables
*deftype-lambda-list*: Internal special variables
*destructuring-deftype-lambda-list*: Internal special variables
*destructuring-lambda-list*: Internal special variables
*macro-lambda-list*: Internal special variables
*ordinary-lambda-list*: Internal special variables
*specialized-lambda-list*: Internal special variables

A
aok-p: Internal classes
aok-p: Internal classes

C
clauses: Internal classes

D
default-default: Internal classes

G
grammar-name: Internal classes

K
keywords: Internal classes
keywords: Internal classes
keywords: Internal classes
keywords: Internal classes
keywords: Internal classes
keywords: Internal classes
keywords: Internal classes
keywords: Internal classes
keywords: Internal classes
keywords: Internal classes
keywords: Internal classes
keywords: Internal classes

M
map: Internal classes

S
safety: Internal classes
safety: Internal classes
Slot, aok-p: Internal classes
Slot, aok-p: Internal classes
Slot, clauses: Internal classes
Slot, default-default: Internal classes
Slot, grammar-name: Internal classes
Slot, keywords: Internal classes
Slot, keywords: Internal classes
Slot, keywords: Internal classes
Slot, keywords: Internal classes
Slot, keywords: Internal classes
Slot, keywords: Internal classes
Slot, keywords: Internal classes
Slot, keywords: Internal classes
Slot, keywords: Internal classes
Slot, keywords: Internal classes
Slot, keywords: Internal classes
Slot, keywords: Internal classes
Slot, map: Internal classes
Slot, safety: Internal classes
Slot, safety: Internal classes
Slot, spec: Internal classes
Slot, specs: Internal classes
spec: Internal classes
Special Variable, *compiler-macro-lambda-list*: Internal special variables
Special Variable, *define-method-combination-lambda-list*: Internal special variables
Special Variable, *define-modify-macro-lambda-list*: Internal special variables
Special Variable, *defsetf-lambda-list*: Internal special variables
Special Variable, *deftype-lambda-list*: Internal special variables
Special Variable, *destructuring-deftype-lambda-list*: Internal special variables
Special Variable, *destructuring-lambda-list*: Internal special variables
Special Variable, *macro-lambda-list*: Internal special variables
Special Variable, *ordinary-lambda-list*: Internal special variables
Special Variable, *specialized-lambda-list*: Internal special variables
specs: Internal classes

Jump to:   *  
A   C   D   G   K   M   S  

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

A.4 Data types

Jump to:   A   C   D   E   K   L   M   O   P   R   S   W  
Index Entry  Section

A
aux-clause: Internal classes

C
Class, aux-clause: Internal classes
Class, clause: Internal classes
Class, defaulting-clause: Internal classes
Class, destructuring-clause: Internal classes
Class, destructuring-key-clause: Internal classes
Class, destructuring-optional-clause: Internal classes
Class, destructuring-regular-clause: Internal classes
Class, environment-clause: Internal classes
Class, key-clause: Internal classes
Class, lambda-list: Internal classes
Class, multiple-clause: Internal classes
Class, optional-clause: Internal classes
Class, regular-clause: Internal classes
Class, rest-clause: Internal classes
Class, singleton-clause: Internal classes
Class, specialized-regular-clause: Internal classes
Class, whole-clause: Internal classes
clause: Internal classes

D
defaulting-clause: Internal classes
destructuring-clause: Internal classes
destructuring-key-clause: Internal classes
destructuring-optional-clause: Internal classes
destructuring-regular-clause: Internal classes

E
environment-clause: Internal classes

K
key-clause: Internal classes

L
lambda-list: Internal classes

M
multiple-clause: Internal classes

O
optional-clause: Internal classes

P
Package, sandalphon.lambda-list: The sandalphon<dot>lambda-list package

R
regular-clause: Internal classes
rest-clause: Internal classes

S
sandalphon.lambda-list: The sandalphon<dot>lambda-list system
sandalphon.lambda-list: The sandalphon<dot>lambda-list package
singleton-clause: Internal classes
specialized-regular-clause: Internal classes
System, sandalphon.lambda-list: The sandalphon<dot>lambda-list system

W
whole-clause: Internal classes

Jump to:   A   C   D   E   K   L   M   O   P   R   S   W