A collection of useful macros and functions I use in almost every project.
We can use QuickLisp to load utility:
(ql:quickload :utility)
-
[macro]
(DOHASH ((K V) HASH &body BODY))
- Iterate through the contents of a hash table.
-
[macro]
(ETOUQ (&body BODY))
- Expand into the macro-time evaluation of BODY.
(etouq (list (car (cons 'car 0))
`(quote ,(cdr (list 0 1 2)))))
=>
1
-
[macro]
(DOBOX ((&rest INTERVAL-FORMS) &rest BODY))
- Iterate through all coordinates bounded by the dimensions specified in INTERVAL-FORMS.
Example:
(dobox ((x 0 2) (y 0 3)) (print (list x y)))
=>
(0 0)
(0 1)
(0 2)
(1 0)
(1 1)
(1 2)
-
[function]
(KEYWORDIFY (SYM))
- Intern SYM in the keyword package. SYM is a string designator.
-
[macro]
(ANY (&body BODY))
- Expand into a random element of body. Most useful to denote code invariants.
-
[function]
(FLOATIFY (X))
- Coerce X to type 'SINGLE-FLOAT
This library is released under the MIT License.