/
about.html
120 lines (110 loc) · 11.8 KB
/
about.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8"> <title>Form-Fiddle</title> <meta name="viewport" content="width=device-width"> <meta name="description" content="A collection of utilities to destructure lambda forms."> <meta name="author" content="Nicolas Hafner <shinmera@tymoon.eu>"> <style type="text/css"> body{
max-width: 1024px;
margin: 0 auto 0 auto;
font-family: sans-serif;
color: #333333;
font-size: 14pt;
padding: 5px;
}
body>header{
display:flex;
align-items: center;
justify-content: center;
flex-direction: column;
max-width: 100%;
text-align: center;
}
body>header img{
max-width: 50%;
}
img{
max-width: 100%;
max-height: 100%;
}
code{
font-family: Consolas, Inconsolata, monospace;
}
a{
text-decoration: none;
color: #0055AA;
}
a img{
border: none;
}
#documentation{
text-align: justify;
}
#documentation pre{
margin-left: 20px;
overflow: auto;
}
#documentation img{
margin: 5px;
}
#symbol-index>ul{
list-style: none;
padding: 0;
}
#symbol-index .package>ul{
list-style: none;
padding: 0 0 0 10px;
}
#symbol-index .package .nicknames{
font-weight: normal;
}
#symbol-index .package h4{
display: inline-block;
margin: 0;
}
#symbol-index .package article{
margin: 0 0 15px 0;
}
#symbol-index .package article header{
font-size: 1.2em;
font-weight: normal;
}
#symbol-index .package .name{
margin-right: 5px;
}
#symbol-index .package .docstring{
margin: 0 0 0 15px;
white-space: pre-wrap;
font-size: 12pt;
}
@media (max-width: 800px){
body{font-size: 12pt;}
} </style> </head> <body> <header> <h1>form-fiddle</h1> <span class="version">1.1.0</span> <p class="description">A collection of utilities to destructure lambda forms.</p> </header> <main> <article id="documentation"> <div><h2 id="about_form-fiddle">About Form-Fiddle</h2> <p>Often times I need to destructure a form definition in a macro. This is a set of simple utilities to help with that.</p> <h2 id="how_to">How To</h2> <p>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 <code><a href="#FORM-FIDDLE:SPLIT-LAMBDA-FORM">split-lambda-form</a></code>, or directly as a binding macro with <code><a href="#FORM-FIDDLE:WITH-DESTRUCTURED-LAMBDA-FORM">with-destructured-lambda-form</a></code>.</p> <pre><code>(<a href="#FORM-FIDDLE:SPLIT-LAMBDA-FORM">split-lambda-form</a> '(<a href="http://l1sp.org/cl/defun">defun</a> lambda-body (lambda-form)
(<a href="http://l1sp.org/cl/cddr">cddr</a> lambda-form)))
(<a href="#FORM-FIDDLE:WITH-DESTRUCTURED-LAMBDA-FORM">with-destructured-lambda-form</a> (:forms forms)
'(<a href="http://l1sp.org/cl/defmacro">defmacro</a> foo (bar)
(<a href="http://l1sp.org/cl/declare">declare</a> (<a href="http://l1sp.org/cl/ignore">ignore</a> bar))
"Testing macro!"
(<a href="http://l1sp.org/cl/print">print</a> "test!"))
forms)
</code></pre> <h2 id="see_also">See Also</h2> <ul> <li><a href="https://shinmera.github.io/lambda-fiddle">Lambda-Fiddle</a> To destructure lambda-lists.</li> </ul> </div> </article> <article id="copyright"> <h2>Copyright</h2> <span>form-fiddle</span> is licensed under the <span><a href="https://tldrlegal.com/search?q=Artistic">Artistic</a></span> license. © <span>Nicolas Hafner <shinmera@tymoon.eu></span> . This library can be obtained on <a href="https://github.com/Shinmera/form-fiddle">https://github.com/Shinmera/form-fiddle</a>. </article> <article id="symbol-index"> <h2>Package Index</h2> <ul><li class="package"> <h3> <a name="FORM-FIDDLE" href="#FORM-FIDDLE">FORM-FIDDLE</a> <span class="nicknames">(ORG.SHIRAKUMO.FORM-FIDDLE)</span> </h3> <ul><li> <a name="FORM-FIDDLE:LAMBDA-BODY"> </a> <article id="FUNCTION FORM-FIDDLE:LAMBDA-BODY"> <header class="function"> <span class="type">function</span> <code>(</code><h4 class="name"><code><a href="#FUNCTION%20FORM-FIDDLE%3ALAMBDA-BODY">LAMBDA-BODY</a></code></h4> <code class="qualifiers"></code> <code class="arguments">LAMBDA-FORM</code><code>)</code> </header> <div class="docstring"><pre>Returns all BODY forms of the lambda-form.
|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯v¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|
(function [name] qualifier* lambda-list [[docstring? | declaration*]] form*)</pre></div> </article> </li><li> <a name="FORM-FIDDLE:LAMBDA-DECLARATIONS"> </a> <article id="FUNCTION FORM-FIDDLE:LAMBDA-DECLARATIONS"> <header class="function"> <span class="type">function</span> <code>(</code><h4 class="name"><code><a href="#FUNCTION%20FORM-FIDDLE%3ALAMBDA-DECLARATIONS">LAMBDA-DECLARATIONS</a></code></h4> <code class="qualifiers"></code> <code class="arguments">LAMBDA-FORM</code><code>)</code> </header> <div class="docstring"><pre>Returns the DECLARATIONS of the lambda-form, if any.
v
(function [name] qualifier* lambda-list [[docstring? | declaration*]] form*)</pre></div> </article> </li><li> <a name="FORM-FIDDLE:LAMBDA-DOCSTRING"> </a> <article id="FUNCTION FORM-FIDDLE:LAMBDA-DOCSTRING"> <header class="function"> <span class="type">function</span> <code>(</code><h4 class="name"><code><a href="#FUNCTION%20FORM-FIDDLE%3ALAMBDA-DOCSTRING">LAMBDA-DOCSTRING</a></code></h4> <code class="qualifiers"></code> <code class="arguments">LAMBDA-FORM</code><code>)</code> </header> <div class="docstring"><pre>Returns the DOCSTRING of the lambda-form, if any.
v
(function [name] qualifier* lambda-list [[docstring? | declaration*]] form*)</pre></div> </article> </li><li> <a name="FORM-FIDDLE:LAMBDA-FORMS"> </a> <article id="FUNCTION FORM-FIDDLE:LAMBDA-FORMS"> <header class="function"> <span class="type">function</span> <code>(</code><h4 class="name"><code><a href="#FUNCTION%20FORM-FIDDLE%3ALAMBDA-FORMS">LAMBDA-FORMS</a></code></h4> <code class="qualifiers"></code> <code class="arguments">LAMBDA-FORM</code><code>)</code> </header> <div class="docstring"><pre>Returns the actual body forms of the lambda-form, if any.
v
(function [name] qualifier* lambda-list [[docstring? | declaration*]] form*)</pre></div> </article> </li><li> <a name="FORM-FIDDLE:LAMBDA-FUNCTION"> </a> <article id="FUNCTION FORM-FIDDLE:LAMBDA-FUNCTION"> <header class="function"> <span class="type">function</span> <code>(</code><h4 class="name"><code><a href="#FUNCTION%20FORM-FIDDLE%3ALAMBDA-FUNCTION">LAMBDA-FUNCTION</a></code></h4> <code class="qualifiers"></code> <code class="arguments">LAMBDA-FORM</code><code>)</code> </header> <div class="docstring"><pre>Returns the defining FUNCTION of the lambda-form.
v
(function [name] qualifier* lambda-list [[docstring? | declaration*]] form*)</pre></div> </article> </li><li> <a name="FORM-FIDDLE:LAMBDA-LAMBDA-LIST"> </a> <article id="FUNCTION FORM-FIDDLE:LAMBDA-LAMBDA-LIST"> <header class="function"> <span class="type">function</span> <code>(</code><h4 class="name"><code><a href="#FUNCTION%20FORM-FIDDLE%3ALAMBDA-LAMBDA-LIST">LAMBDA-LAMBDA-LIST</a></code></h4> <code class="qualifiers"></code> <code class="arguments">LAMBDA-FORM</code><code>)</code> </header> <div class="docstring"><pre>Returns the LAMBDA-LIST of the lambda-form.
v
(function [name] qualifier* lambda-list [[docstring? | declaration*]] form*)</pre></div> </article> </li><li> <a name="FORM-FIDDLE:LAMBDA-NAME"> </a> <article id="FUNCTION FORM-FIDDLE:LAMBDA-NAME"> <header class="function"> <span class="type">function</span> <code>(</code><h4 class="name"><code><a href="#FUNCTION%20FORM-FIDDLE%3ALAMBDA-NAME">LAMBDA-NAME</a></code></h4> <code class="qualifiers"></code> <code class="arguments">LAMBDA-FORM</code><code>)</code> </header> <div class="docstring"><pre>Returns the NAME of the lambda-form, if any.
v
(function [name] qualifier* lambda-list [[docstring? | declaration*]] form*)</pre></div> </article> </li><li> <a name="FORM-FIDDLE:LAMBDA-QUALIFIERS"> </a> <article id="FUNCTION FORM-FIDDLE:LAMBDA-QUALIFIERS"> <header class="function"> <span class="type">function</span> <code>(</code><h4 class="name"><code><a href="#FUNCTION%20FORM-FIDDLE%3ALAMBDA-QUALIFIERS">LAMBDA-QUALIFIERS</a></code></h4> <code class="qualifiers"></code> <code class="arguments">LAMBDA-FORM</code><code>)</code> </header> <div class="docstring"><pre>Returns the QUALIFIERS of the lambda-form.
v
(function [name] qualifier* lambda-list [[docstring? | declaration*]] form*)</pre></div> </article> </li><li> <a name="FORM-FIDDLE:SPLIT-BODY-OPTIONS"> </a> <article id="FUNCTION FORM-FIDDLE:SPLIT-BODY-OPTIONS"> <header class="function"> <span class="type">function</span> <code>(</code><h4 class="name"><code><a href="#FUNCTION%20FORM-FIDDLE%3ASPLIT-BODY-OPTIONS">SPLIT-BODY-OPTIONS</a></code></h4> <code class="qualifiers"></code> <code class="arguments">BODY</code><code>)</code> </header> <div class="docstring"><pre>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</pre></div> </article> </li><li> <a name="FORM-FIDDLE:SPLIT-LAMBDA-FORM"> </a> <article id="FUNCTION FORM-FIDDLE:SPLIT-LAMBDA-FORM"> <header class="function"> <span class="type">function</span> <code>(</code><h4 class="name"><code><a href="#FUNCTION%20FORM-FIDDLE%3ASPLIT-LAMBDA-FORM">SPLIT-LAMBDA-FORM</a></code></h4> <code class="qualifiers"></code> <code class="arguments">LAMBDA-FORM</code><code>)</code> </header> <div class="docstring"><pre>Returns all parts of a lambda-form as a list in the following order:
FUNCTION NAME QUALIFIERS LAMBDA-LIST DOCSTRING DECLARATIONS FORMS</pre></div> </article> </li><li> <a name="FORM-FIDDLE:WITH-BODY-OPTIONS"> </a> <article id="MACRO FORM-FIDDLE:WITH-BODY-OPTIONS"> <header class="macro"> <span class="type">macro</span> <code>(</code><h4 class="name"><code><a href="#MACRO%20FORM-FIDDLE%3AWITH-BODY-OPTIONS">WITH-BODY-OPTIONS</a></code></h4> <code class="qualifiers"></code> <code class="arguments">(BODY OTHER-OPTIONS &REST OPTIONS) FORM &BODY BODY-FORMS</code><code>)</code> </header> <div class="docstring"><pre>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.</pre></div> </article> </li><li> <a name="FORM-FIDDLE:WITH-DESTRUCTURED-LAMBDA-FORM"> </a> <article id="MACRO FORM-FIDDLE:WITH-DESTRUCTURED-LAMBDA-FORM"> <header class="macro"> <span class="type">macro</span> <code>(</code><h4 class="name"><code><a href="#MACRO%20FORM-FIDDLE%3AWITH-DESTRUCTURED-LAMBDA-FORM">WITH-DESTRUCTURED-LAMBDA-FORM</a></code></h4> <code class="qualifiers"></code> <code class="arguments">(&KEY FUNCTION NAME QUALIFIERS LAMBDA-LIST DOCSTRING DECLARATIONS FORMS)
EXPRESSION &BODY BODY</code><code>)</code> </header> <div class="docstring"><pre>Destructures the given EXPRESSION into its lambda-form parts.</pre></div> </article> </li></ul> </li></ul> </article> </main> </body> </html>