Now that tables expose their keys well enough to implement this in terms of a single-key lookup, consider replacing this with a single-key lookup again.
Makes a table with entries corresponding to the given table, except each value is replaced with a sub-namespace, which is to say a namespace uniquely determined by the given namespace and the entry’s key. The entry’s value is ignored.
Distinct keys yield distinct sub-namespaces.
Uses the given namespace to obtain a first-class name value. The given modality must be the current one.
Given a namespace and a name to use as a key, obtains a getdef that is used to contribute its defined value to the element contribution map on the namespace. When the getdef’s definer is used, if more than one element contribution is given for the same key at the same timestamp, an error occurs; all listener contributors, element contributors, and ticks begun by these contributions are in error, and their ticks’ side effects are invalidated. When the getdef’s definer is used, the then-current modality’s ancestors must not have used restrictions like
contributing-only-... restrictions in a way that now disallows making element contributions to the given namespace.
ns key (fn singleton-table)
Monadically, given a namespace, a name to use as a key, and a listener function, contributes to the listener contribution map on the namespace. The listener function will be called monadically in a different future tick each time an entry is contributed to the namespace’s element contribution map. The listener is given a singleton table containing the entry contributed. If more than one listener contribution is given for the same key, an error occurs; all listener contributors, element contributors, and ticks begun by these contributions are in error, and their ticks’ side effects are invalidated.
This is a way to make frameworks that are extensible in the sense of the open-world assumption (OWA).
Gets the namespace’s full element contribution map as a table. The given modality must be the current one, and its ancestors must have used
contributing-only-... restrictions in a way that now disallows making contributions to the given namespace.
During macroexpansion, this operation will not compute a result until at least all the original macroexpansion ticks have completed, since they are not limited by any
This is a way to make frameworks that are extensible in the sense of the closed-world assumption (CWA).
Returns an empty set of namespaces.
Returns a fuse that takes the union of sets of namespaces.
Returns a set of namespaces that contains all namespaces except the ones in the given set of namespaces.
Returns the set of namespaces descending from the given namespace, including the given namespace itself.
Monadically, schedules the effects to occur in a future tick where contributing to multimethods outside the given set of namespaces is not allowed, but reading closed-world-assumption collections of contributions outside the given set of namespace is allowed.