Re: how to extend a capability on a data source?
Kevin Reid <kpreid-M/[email protected]>
| Newsgroups | gmane.comp.capabilities.general |
|---|---|
| Message-ID | <[email protected]> |
On Nov 3, 2013, at 21:44, David Barbour <[email protected]> wrote: > On Sun, Nov 3, 2013 at 9:06 PM, Rob Withers <[email protected]> wrote: >>> Those properties together would make the Resolver linear, and would ensure that the promise is fulfilled once and only once (modulo divergence of the resolver computation). >> To my recollection, this is precisely what Elib delivers. > When I say "ensure", I think I'm saying something stronger than you're hearing. Elib does not make a *static guarantee* that a resolver is called exactly once. If a programmer simply drops the resolver, it is never called, and thus Elib needs a concept of "broken" promises. I'm not following the conversation, so this is strictly a technical nitpick about E: A broken promise is not one which has never been resolved, but one which has been resolved to a failure. (More precisely, a promise is resolved to another ref, which happens to be a broken ref.) A promise whose resolver is never used simply remains unresolved forever. If the state of a promise revealed that its resolver has been dropped, then that would expose GC nondeterminism even in the single-vat case, so we don't do that. -- Kevin Reid <http://switchb.org/kpreid/>