Libraries » Macros

Libraries » Macros » Simple macros

Macros that don't need to be extensible.

... » map-bind

Go to library page ⬈

Allows visual grouping of variables with their corresponding values (not necessarily 1:1) in calls to mapping operators when using an inline LAMBDA. Does so in a way that automatically supports virtually every existing and future mapping operator, all lambda keywords and FUNCALL/APPLY/MULTIPLE-VALUE-CALL variations.

Library type Visual macro
Project complexity Embarrassingly trivial

... » positional-lambda

Go to library page ⬈

A concise, intuitive and flexible syntax for trivial lambdas that eschews explicit (and often contextually-redundant) naming of parameter variables in favor of positional references, with support for a used or ignored &rest parameter and automatic declaration of ignored parameters when logical "gaps" are left in the positional references. Further convenience features are provided.

Library type Concision macro
Project complexity Simple

... » enhanced-eval-when

Go to library page ⬈

Provides an enhanced EVAL-WHEN macro that supports
(eval-when t ...) as a shorthand for
(eval-when (:compile-toplevel :load-toplevel :execute) ...), addressing concerns about verbosity. An ENHANCED-EVAL-WHEN alias is also supported, as well as an EVAL-ALWAYS macro and package nickname, for good measure.

As eval-when with all situations specified is used an overwhelming majority of the time by most users, these shorthands can really come handy!

Library type Wrapper macro
Project complexity Embarrassingly trivial

... » enhanced-multiple-value-bind

Go to library page ⬈

Provides an enhanced MULTIPLE-VALUE-BIND macro that adds support for lambda keywords by expanding to a MULTIPLE-VALUE-CALL when necessary. This makes catching multiple-value &rest and &key much more lightweight and convenient. A MULTIPLE-VALUE-&BIND alias is supported.

Library type Wrapper macro
Project complexity Embarrassingly trivial

... » macro-level

Go to library page ⬈

Saves on indentation while being more concise and direct.
(macro-level ...) == (macrolet ((m () ...)) (m))

Library type Visual macro
Project complexity Embarrassingly trivial

Libraries » Macros » Extensible macros

Language extensions implemented as extensible macros.

... » cartesian-product-switch

Go to library page ⬈

Chooses the appropriate form to execute according to the combined results of multiple tests. This is a straightforward and efficient alternative to the convoluted ad-hoc conditionals one might otherwise resort to.

Library type Operator overlay macro
Project complexity Simple

... » place-modifiers

Go to library page ⬈

Essentially gives access to hundreds of modify-macros through one single macro: MODIFY.

Library type Operator overlay macro
Project complexity Simple/Medium

... » anaphoric-variants

Go to library page ⬈

Gives access to anaphoric variants of operators through one macro: ANAPHORIC. The user explicitly provides a variable name, preserving sanity, in contrast to the traditional use of an evil implicit variable ("IT"). Some operators can bind additional handy variables when explicitly requested.

Library type Operator overlay macro
Project complexity Medium

... » multiple-value-variants

Go to library page ⬈

Gives access to multiple-value variants of operators through one macro: MULTIPLE-VALUE. There are built-in variants for some standard operators; it's easy to create your own variants for other operators. The multiple-value mapping operators are especially useful.

Library type Operator overlay macro
Project complexity Medium

Libraries » Macros » Macro utilities

Utilities that help write macros more easily.

... » parse-number-range

Go to library page ⬈

Parses LOOP's convenient "for-as-arithmetic" syntax into 5 simple values: from, to, limit-kind (:inclusive, :exclusive or nil if unbounded), by (step) and direction (+ or -). Further related utilities are provided. Intended for easy implementation of analogous functionality in other constructs.

Library type Thematic utilities
Project complexity Simple

... » bubble-operator-upwards

Go to library page ⬈

Demultiplexes all alternative branches in a form by way of cartesian product. This operation is notably useful for easy implementation of certain kinds of shorthand notations in macros. A cartesian-product function is also exported, as it's needed to implement the main function.

Library type Utility function
Project complexity Trivial

Libraries » Data structures

Don't neglect your data structures, lest they become data strictures!

... » incognito-keywords

Go to library page ⬈

Introduces a new kind of keyword that looks just like any non-keyword symbol and allows safe usage of convenient but clashy symbol names by multiple libraries without conflicts through sharing. Some names that might benefit are alist, blist, plist, macro, operator, index, &doc, &decl, &rest+, &destructure, &ignored and &ignorable.

Library type Data structure
Project complexity Simple

... » symbol-namespaces

Go to library page ⬈

Defines a new kind of package that's named by a symbol rather than a string and that maps from existing symbols to their respective "implicitly managed" counterparts. The motivating use-case is to conceptually allow multiple definitions of the same kind on a single symbol, without conflicts.

Library type Data structure
Project complexity Simple

Libraries » Uncategorized

Odds and ends to reach ends against all odds.

... » clhs

Go to library page ⬈

Intends to make it even easier to install a copy of the CLHS locally.

License Mostly proprietary
Library type Installation helper
Project complexity Simple

... » place-utils

Go to library page ⬈

Provides a few utilities relating to setfable places.

Library type Thematic utilities
Project complexity Simple