Proposal: Revamped Exports - adamnew123456/spc Wiki
This proposal is meant to solve an existing issue with how
export works - namely, that it only works on values, and not on types (or other potential bindings, like namespaces).
In order to alleviate this issue, export should be able to disambiguate values from types. This will be done via the addition of the export specifier, an extra character prepended to the name of the export. These characters are as follows:
For example, to export both the function
print-pair and the type
(declare (pair-type (struct (a integer) (b integer))) (print-pair (function byte pair-type))) (export *pair-type 'print-pair)
This has the bonus of resolving ambiguities within export, when the type and the function are named the same. Normally, spc can handle these ambiguities on its own (as it turns out, it isn't ambiguous when a type or a value is required), but since
export lacks the required context, it has to be told what it is exporting.
(declare (pair (struct (a integer) (b integer))) (pair (function pair integer integer))) (export *pair 'pair)