Hexstream/anaphoric-variants
| 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.
(Formerly called "explicit-anaphora".)
|
Hexstream/bubble-operator-upwards
| A function that "bubbles an operator upwards" in a form,
demultiplexing all alternative branches 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.
|
Hexstream/canonicalized-initargs
| Provides a :canonicalize slot option accepting an initarg canonicalization
function.
|
Hexstream/cartesian-product-switch
| A macro for choosing 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.
|
Hexstream/cesdi
| Provides a compute-effective-slot-definition-initargs generic function that
allows for more ergonomic initialization of effective slot definition objects.
|
Hexstream/class-options
| Provides easy access to the defining class and its options during
initialization or reinitialization of its subcomponents.
|
Hexstream/clhs
| This installation helper makes it even easier to install a copy of the CLHS
locally. (ql:quickload "clhs").
|
Hexstream/compatible-metaclasses
| Validates superclasses according to a simple substitution model, thereby
greatly simplifying the definition of class mixins.
|
Hexstream/definitions-systems
| Provides a simple unified extensible way of processing named definitions.
|
Hexstream/enhanced-boolean
| Provides a canonical way of converting generalized booleans to booleans.
|
Hexstream/enhanced-defclass
| Provides a truly extensible version of DEFCLASS that can accurately control
the expansion according to the metaclass and automatically detect the suitable
metaclass by analyzing the DEFCLASS form.
|
Hexstream/enhanced-eval-when
| 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.
|
Hexstream/enhanced-find-class
| Provides a canonical way of converting class designators to classes.
|
Hexstream/enhanced-multiple-value-bind
| 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.
|
Hexstream/enhanced-typep
| Obsoletes all TYPEP thin wrappers.
|
Hexstream/evaled-when
| Provides a way of extracting and replicating the compile-time side-effects of
forms.
|
Hexstream/fakenil
| Provides a canonical stand-in for NIL for contexts where NIL means "no
value".
|
Hexstream/first-time-value
| Returns the result of evaluating a form in the current lexical and dynamic
context the first time it's encountered, and the cached result of that
computation on subsequent evaluations.
|
Hexstream/incognito-keywords
| 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 &ignorable).
|
Hexstream/inheriting-readers
| Provides a simple yet powerful value inheritance scheme.
|
Hexstream/its
| Provides convenient access to multiple values of an object in a concise,
explicit and efficient way.
|
Hexstream/macro-level
| MACRO-LEVEL is an embarrassingly trivial convenience macro that saves on
indentation while being more concise and direct. (macro-level ...) == (macrolet
((m () ...)) (m))
|
Hexstream/map-bind
| MAP-BIND is a macro that allows visual grouping of variables with their
corresponding values (not necessarily 1:1) in calls to mapping operators when
using an inline LAMBDA. It 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.
|
Hexstream/multiple-value-variants
| 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.
|
Hexstream/object-class
| Ensures that special subclasses of standard-object cluster right in front of
standard-object in the class precedence list.
|
Hexstream/parse-number-range
| 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.
|
Hexstream/place-modifiers
| place-modifiers essentially gives access to hundreds of modify-macros through
one single macro: MODIFY.
|
Hexstream/place-utils
| Provides a few utilities relating to setfable places.
|
Hexstream/positional-lambda
| positional-lambda is a concise, intuitive and flexible syntax (macro) 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.
|
Hexstream/shared-preferences
| Notably allows flexible specification of package-local preferences.
|
Hexstream/simple-guess
| Defines a simple extensible protocol for computing a guess using advisors.
|
Hexstream/symbol-namespaces
| 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.
|
Hexstream/trivial-jumptables
| Provides efficient O(1) jumptables on supported Common Lisp implementations
and falls back to O(log(n)) on others.
|
Hexstream/with-output-to-stream
| Provides a simple way of directing output to a stream according to the
concise and intuitive semantics of FORMAT's stream argument.
|
Hexstream/with-shadowed-bindings
| Establishes a new lexical context within which specified bindings are
explicitly shadowed, making it clear that they are not referenced within,
thereby reducing cognitive load.
|