The form-fiddle Reference Manual

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

The form-fiddle Reference Manual

This is the form-fiddle Reference Manual, version 1.1.0, generated automatically by Declt version 4.0 beta 2 "William Riker" on Wed Jun 15 04:33:41 2022 GMT+0.

Table of Contents


1 Introduction

About Form-Fiddle

Often times I need to destructure a form definition in a macro. This is a set of simple utilities to help with that.

How To

There's individual functions to extract each part of a lambda-definition-form: function, name, qualifiers, lambda-list, body, declarations, docstring and the forms. You can get all in one with split-lambda-form, or directly as a binding macro with with-destructured-lambda-form.

(split-lambda-form '(defun lambda-body (lambda-form)
                      (cddr lambda-form)))

(with-destructured-lambda-form (:forms forms)
    '(defmacro foo (bar)
       (declare (ignore bar))
       "Testing macro!"
       (print "test!"))
  forms)

See Also


2 Systems

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


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

2.1 form-fiddle

A collection of utilities to destructure lambda forms.

Maintainer

Nicolas Hafner <shinmera@tymoon.eu>

Author

Nicolas Hafner <shinmera@tymoon.eu>

Home Page

https://Shinmera.github.io/form-fiddle/

Source Control

(GIT https://github.com/Shinmera/form-fiddle.git)

Bug Tracker

https://github.com/Shinmera/form-fiddle/issues

License

zlib

Version

1.1.0

Dependency

documentation-utils (system).

Source

form-fiddle.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 form-fiddle/form-fiddle.asd

Source

form-fiddle.asd.

Parent Component

form-fiddle (system).

ASDF Systems

form-fiddle.


3.1.2 form-fiddle/package.lisp

Source

form-fiddle.asd.

Parent Component

form-fiddle (system).

Packages

form-fiddle.


3.1.3 form-fiddle/form-fiddle.lisp

Dependency

package.lisp (file).

Source

form-fiddle.asd.

Parent Component

form-fiddle (system).

Public Interface
Internals

3.1.4 form-fiddle/documentation.lisp

Dependency

form-fiddle.lisp (file).

Source

form-fiddle.asd.

Parent Component

form-fiddle (system).


4 Packages

Packages are listed by definition order.


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

4.1 form-fiddle

Source

package.lisp.

Nickname

org.shirakumo.form-fiddle

Use List

common-lisp.

Public Interface
Internals

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: with-body-options ((body other-options &rest options) form &body body-forms)

Destructures the body according to split-body-kargs.

OTHER-OPTIONS will be bound to contain all the options that occur in the body but were not explicitly requested in OPTIONS. BODY will be bound to the remaining body forms. Each option in OPTIONS can be either a symbol or a list of symbol and default. The symbol is automatically converted to a keyword to match against the body options.

Package

form-fiddle.

Source

form-fiddle.lisp.

Macro: with-destructured-lambda-form ((&key function name qualifiers lambda-list docstring declarations forms) expression &body body)

Destructures the given EXPRESSION into its lambda-form parts.

Package

form-fiddle.

Source

form-fiddle.lisp.


Previous: , Up: Public Interface   [Contents][Index]

5.1.2 Ordinary functions

Function: lambda-body (lambda-form)

Returns all BODY forms of the lambda-form.

|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯v¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯| (function [name] qualifier* lambda-list [[docstring? | declaration*]] form*)

Package

form-fiddle.

Source

form-fiddle.lisp.

Function: lambda-declarations (lambda-form)

Returns the DECLARATIONS of the lambda-form, if any.

v
(function [name] qualifier* lambda-list [[docstring? | declaration*]] form*)

Package

form-fiddle.

Source

form-fiddle.lisp.

Function: lambda-docstring (lambda-form)

Returns the DOCSTRING of the lambda-form, if any.

v
(function [name] qualifier* lambda-list [[docstring? | declaration*]] form*)

Package

form-fiddle.

Source

form-fiddle.lisp.

Function: lambda-forms (lambda-form)

Returns the actual body forms of the lambda-form, if any.

v (function [name] qualifier* lambda-list [[docstring? | declaration*]] form*)

Package

form-fiddle.

Source

form-fiddle.lisp.

Function: lambda-function (lambda-form)

Returns the defining FUNCTION of the lambda-form.
v
(function [name] qualifier* lambda-list [[docstring? | declaration*]] form*)

Package

form-fiddle.

Source

form-fiddle.lisp.

Function: lambda-lambda-list (lambda-form)

Returns the LAMBDA-LIST of the lambda-form.

v
(function [name] qualifier* lambda-list [[docstring? | declaration*]] form*)

Package

form-fiddle.

Source

form-fiddle.lisp.

Function: lambda-name (lambda-form)

Returns the NAME of the lambda-form, if any.

v
(function [name] qualifier* lambda-list [[docstring? | declaration*]] form*)

Package

form-fiddle.

Source

form-fiddle.lisp.

Function: lambda-qualifiers (lambda-form)

Returns the QUALIFIERS of the lambda-form.

v
(function [name] qualifier* lambda-list [[docstring? | declaration*]] form*)

Package

form-fiddle.

Source

form-fiddle.lisp.

Function: split-body-options (body)

Parses the body into two separate lists of forms and options.
This is found in some expressions like in the clause body of RESTART-CASE.

BODY ::= OPTION* FORM*
OPTION ::= KEYWORD EXPRESSION

Package

form-fiddle.

Source

form-fiddle.lisp.

Function: split-lambda-form (lambda-form)

Returns all parts of a lambda-form as a list in the following order: FUNCTION NAME QUALIFIERS LAMBDA-LIST DOCSTRING DECLARATIONS FORMS

Package

form-fiddle.

Source

form-fiddle.lisp.


5.2 Internals


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

5.2.1 Ordinary functions

Function: declaration-p (form)

Returns T if the given thing is a declaration expression.

Package

form-fiddle.

Source

form-fiddle.lisp.

Function: docstring-p (form)

Returns T if the given thing is a docstring.

Package

form-fiddle.

Source

form-fiddle.lisp.

Function: removef (plist &rest args)
Package

form-fiddle.

Source

form-fiddle.lisp.


Appendix A Indexes


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

A.1 Concepts


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

A.2 Functions

Jump to:   D   F   L   M   R   S   W  
Index Entry  Section

D
declaration-p: Private ordinary functions
docstring-p: Private ordinary functions

F
Function, declaration-p: Private ordinary functions
Function, docstring-p: Private ordinary functions
Function, lambda-body: Public ordinary functions
Function, lambda-declarations: Public ordinary functions
Function, lambda-docstring: Public ordinary functions
Function, lambda-forms: Public ordinary functions
Function, lambda-function: Public ordinary functions
Function, lambda-lambda-list: Public ordinary functions
Function, lambda-name: Public ordinary functions
Function, lambda-qualifiers: Public ordinary functions
Function, removef: Private ordinary functions
Function, split-body-options: Public ordinary functions
Function, split-lambda-form: Public ordinary functions

L
lambda-body: Public ordinary functions
lambda-declarations: Public ordinary functions
lambda-docstring: Public ordinary functions
lambda-forms: Public ordinary functions
lambda-function: Public ordinary functions
lambda-lambda-list: Public ordinary functions
lambda-name: Public ordinary functions
lambda-qualifiers: Public ordinary functions

M
Macro, with-body-options: Public macros
Macro, with-destructured-lambda-form: Public macros

R
removef: Private ordinary functions

S
split-body-options: Public ordinary functions
split-lambda-form: Public ordinary functions

W
with-body-options: Public macros
with-destructured-lambda-form: Public macros

Jump to:   D   F   L   M   R   S   W  

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

A.3 Variables