<div dir="ltr"><div dir="ltr"><blockquote style="margin:1.2em 0px;border-left:4px solid rgb(221,221,221);padding:0px 1em;color:rgb(119,119,119);quotes:none"><p style="margin:0px 0px 1.2em">Is it the case that the information content of a carrier made by c=ExtentLocal.where(k,v) is just exactly<br>the pair k,v?</p></blockquote><p style="margin:0px 0px 1.2em">Yes</p><blockquote style="margin:1.2em 0px;border-left:4px solid rgb(221,221,221);padding:0px 1em;color:rgb(119,119,119);quotes:none"><p style="margin:0px 0px 1.2em">I suppose a carrier made by c.where(k2,v2) contains exactly k,v,k2,v2.</p></blockquote><p style="margin:0px 0px 1.2em">Semantically yes, but implementation wise, it contains exactly <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">c,k2,v2</code>, it works as a linked-list of <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">(ExtentLocal<T>, T)</code> pairs</p><blockquote style="margin:1.2em 0px;border-left:4px solid rgb(221,221,221);padding:0px 1em;color:rgb(119,119,119);quotes:none"><p style="margin:0px 0px 1.2em">(But if k==k2 then the information content is just k2,v2.)</p></blockquote><p style="margin:0px 0px 1.2em">No, <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">c.where(k, v2)</code> will contain <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">c,k,v2</code> and <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">c</code> will still contain <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">k,v</code>.</p><blockquote style="margin:1.2em 0px;border-left:4px solid rgb(221,221,221);padding:0px 1em;color:rgb(119,119,119);quotes:none"><p style="margin:0px 0px 1.2em">I can store a Carrier in a global variable, even pass it to five other threads, and have each of them call c.run(…) with completely independent sets of bindings, except for the k,v,k2,v2 mandated by the carrier’s information content.</p></blockquote><p style="margin:0px 0px 1.2em">Correct</p><blockquote style="margin:1.2em 0px;border-left:4px solid rgb(221,221,221);padding:0px 1em;color:rgb(119,119,119);quotes:none"><p style="margin:0px 0px 1.2em">IIRC</p></blockquote><p style="margin:0px 0px 1.2em">You are remembering correctly, there is a method to search for a value in a <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Carrier</code>, <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Carrier#get(ExtentLocal<T> key)</code>, but you cannot iterate over ExtentLocal that are bound to that Carrier.</p><blockquote style="margin:1.2em 0px;border-left:4px solid rgb(221,221,221);padding:0px 1em;color:rgb(119,119,119);quotes:none"><p style="margin:0px 0px 1.2em">although maybe usecases will eventually call […]</p></blockquote><p style="margin:0px 0px 1.2em">I am interested to know what use cases may arise, I can’t imagine exposing the keys of a carrier to be good. A <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Carrier</code> is basically an <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">ExtentLocal<T> to T</code> map. If <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">x</code> is a <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Carrier</code> there is no way to verify a connection between the current extent and <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">x</code>, so the only thing I can think of is to check if some <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">ExtentLocal<T> LOCAL</code> is already bound in <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">x</code> before calling to <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">run/call</code>, but <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Carrier#get(ExtentLocal<T>)</code> already solves this problem.</p><p style="margin:0px 0px 1.2em">Also, in general, exposing the key set of a <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Carrier</code> may be a source for security problems. By exposing the keys you are allowing anyone with access to the <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Carrier</code> the ability to view and override all of the <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">ExtentLocal<T></code>s that are referenced in that <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Carrier</code>, including private ones.</p><blockquote style="margin:1.2em 0px;border-left:4px solid rgb(221,221,221);padding:0px 1em;color:rgb(119,119,119);quotes:none"><p style="margin:0px 0px 1.2em">larger binding-map API sneaks through</p></blockquote><p style="margin:0px 0px 1.2em">Well… It is not part of the API, but using reflection it is possible to get a hold on the <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Snapshot</code> object, as well as the <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Snapshot.prev</code> and <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Carrier.prev</code> fields, which allow you to find all of the <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">ExtentLocal</code>s that exist in the current extent.</p><blockquote style="margin:1.2em 0px;border-left:4px solid rgb(221,221,221);padding:0px 1em;color:rgb(119,119,119);quotes:none"><p style="margin:0px 0px 1.2em">A very different design</p></blockquote><p style="margin:0px 0px 1.2em">Remember you need to support situations like:</p><pre style="font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin-top:1.2em;margin-bottom:1.2em"><code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;white-space:pre-wrap;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em;color:rgb(51,51,51);background:rgb(248,248,248);display:block">ExtentLocal.where(k, v)
.run(() -> {
ExtentLocal.where(k2, v2).run(...);
});
</code></pre><p style="margin:0px 0px 1.2em">So either you are keeping the full extent in the carrier, or make it mutable and leave the rest as it is now.</p><p style="margin:0px 0px 1.2em">Internally, using a static parameter <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">JavaLangAccess JLA</code>, the full extent current is saved, and the <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Carrier</code> is a class that helps you store stuff in the extent (the <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Carrier</code> saves the key-value pairs, and when you call the method <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">run/call</code> it adds it to the current extent), so the first option will needlessly touch internal components (or copy an internal logic to the high level part of the feature), and making stuff mutable is always a place for disasters.</p><p style="margin:0px 0px 1.2em">To explain a bit on this, apart from <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Carrier</code>, there exists a (protected) class called <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Snapshot</code>, a <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Snapshot</code> is basically a linked list of <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Carrier</code>s.</p><p style="margin:0px 0px 1.2em">Using this <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">JLA</code> you can access the <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Snapshot</code> of the current extent.</p><p style="margin:0px 0px 1.2em">When using <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">run/call</code>, the carrier (<code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">bindings</code>) (1) gets the current extent (<code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">prev</code>), (2) creates a new <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Snapshot</code>(<code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">b</code>) whose value is <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">bindings</code> and tail be <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">prev</code> and (3) sets the current extent to <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">b</code>.</p><p style="margin:0px 0px 1.2em">When calling <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">LocalExtent#get(key)</code>, (1) <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">LocalExtent</code> get the current extent, (2) run on each <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Snapshot</code>, (3) in each <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Snapshot</code> it run over every <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Carrier</code> and search for <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">key</code></p><div title="MDH:Jmd0O8KgCgo8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7Ij5JcyBpdCB0aGUg
Y2FzZSB0aGF0IHRoZSBpbmZvcm1hdGlvbiBjb250ZW50Jm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxl
PSJmb250LWZhbWlseTogc2Fucy1zZXJpZjsiPm9mIGEgY2FycmllciBtYWRlIGJ5Jm5ic3A7PC9z
cGFuPjxjb2RlIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4IDAuNGVtOyBib3JkZXIt
cmFkaXVzOiAzcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNDcsIDI0NywgMjQ3KTsiPmM9RXh0
ZW50TG9jYWwud2hlcmUoayx2KTwvY29kZT48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IHNhbnMt
c2VyaWY7Ij4mbmJzcDtpcyBqdXN0IGV4YWN0bHk8L3NwYW4+PGJyIHN0eWxlPSJmb250LWZhbWls
eTogc2Fucy1zZXJpZjsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogc2Fucy1zZXJpZjsiPnRo
ZSBwYWlyJm5ic3A7PC9zcGFuPjxjb2RlIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4
IDAuNGVtOyBib3JkZXItcmFkaXVzOiAzcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNDcsIDI0
NywgMjQ3KTsiPmssdjwvY29kZT48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7
Ij4/PC9zcGFuPjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyI+PGJy
Pjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogc2Fucy1zZXJpZjsi
Plllczwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogc2Fucy1zZXJp
ZjsiPjxicj48L3NwYW4+PC9kaXY+PGRpdj48Zm9udCBmYWNlPSJzYW5zLXNlcmlmIj4mZ3Q7Jm5i
c3A7PC9mb250PjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogc2Fucy1zZXJpZjsiPkkgc3VwcG9z
ZSBhIGNhcnJpZXIgbWFkZSZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IHNh
bnMtc2VyaWY7Ij5ieSZuYnNwOzwvc3Bhbj48Y29kZSBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRp
bmc6IDBweCAwLjRlbTsgYm9yZGVyLXJhZGl1czogM3B4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2Io
MjQ3LCAyNDcsIDI0Nyk7Ij5jLndoZXJlKGsyLHYyKTwvY29kZT48c3BhbiBzdHlsZT0iZm9udC1m
YW1pbHk6IHNhbnMtc2VyaWY7Ij4mbmJzcDtjb250YWlucyBleGFjdGx5Jm5ic3A7PC9zcGFuPjxj
b2RlIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4IDAuNGVtOyBib3JkZXItcmFkaXVz
OiAzcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNDcsIDI0NywgMjQ3KTsiPmssdixrMix2Mjwv
Y29kZT48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7Ij4uJm5ic3A7PC9zcGFu
PjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyI+PGJyPjwv
c3Bhbj48L2Rpdj48ZGl2Pjxmb250IGZhY2U9InNhbnMtc2VyaWYiPlNlbWFudGljYWxseSB5ZXMs
IGJ1dCBpbXBsZW1lbnRhdGlvbiB3aXNlLCBpdCBjb250YWlucyBleGFjdGx5IGBjLGsyLHYyYCwg
aXQgd29ya3MgYXMgYSBsaW5rZWQtbGlzdCBvZiBgKEV4dGVudExvY2FsJmx0O1QmZ3Q7LCBUKWAg
cGFpcnM8L2ZvbnQ+PC9kaXY+PGRpdj48Zm9udCBmYWNlPSJzYW5zLXNlcmlmIj48YnI+PC9mb250
PjwvZGl2PjxkaXY+PGZvbnQgZmFjZT0ic2Fucy1zZXJpZiI+Jmd0OyZuYnNwOzwvZm9udD48c3Bh
biBzdHlsZT0iZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7Ij4oQnV0IGlmJm5ic3A7PC9zcGFuPjxj
b2RlIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4IDAuNGVtOyBib3JkZXItcmFkaXVz
OiAzcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNDcsIDI0NywgMjQ3KTsiPms9PWsyPC9jb2Rl
PjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogc2Fucy1zZXJpZjsiPiZuYnNwO3RoZW4gdGhlIGlu
Zm9ybWF0aW9uIGNvbnRlbnQgaXMganVzdCZuYnNwOzwvc3Bhbj48Y29kZSBzdHlsZT0ibWFyZ2lu
OiAwcHg7IHBhZGRpbmc6IDBweCAwLjRlbTsgYm9yZGVyLXJhZGl1czogM3B4OyBiYWNrZ3JvdW5k
LWNvbG9yOiByZ2IoMjQ3LCAyNDcsIDI0Nyk7Ij5rMix2MjwvY29kZT48c3BhbiBzdHlsZT0iZm9u
dC1mYW1pbHk6IHNhbnMtc2VyaWY7Ij4uKTwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJm
b250LWZhbWlseTogc2Fucy1zZXJpZjsiPjxicj48L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHls
ZT0iZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7Ij5ObywmbmJzcDtgYy53aGVyZShrLCB2MilgIHdp
bGwgY29udGFpbiBgYyxrLHYyYCBhbmQgYGNgIHdpbGwgc3RpbGwgY29udGFpbiBgayx2YC48L3Nw
YW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7Ij48YnI+
PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyI+
Jmd0OyZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7Ij5J
IGNhbiBzdG9yZSBhJm5ic3A7PC9zcGFuPjxjb2RlIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGlu
ZzogMHB4IDAuNGVtOyBib3JkZXItcmFkaXVzOiAzcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigy
NDcsIDI0NywgMjQ3KTsiPkNhcnJpZXI8L2NvZGU+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBz
YW5zLXNlcmlmOyI+Jm5ic3A7aW4gYSBnbG9iYWwmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9ImZv
bnQtZmFtaWx5OiBzYW5zLXNlcmlmOyI+dmFyaWFibGUsIGV2ZW4gcGFzcyBpdCB0byBmaXZlIG90
aGVyIHRocmVhZHMsIGFuZCBoYXZlIGVhY2gmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQt
ZmFtaWx5OiBzYW5zLXNlcmlmOyI+b2YgdGhlbSBjYWxsJm5ic3A7PC9zcGFuPjxjb2RlIHN0eWxl
PSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4IDAuNGVtOyBib3JkZXItcmFkaXVzOiAzcHg7IGJh
Y2tncm91bmQtY29sb3I6IHJnYigyNDcsIDI0NywgMjQ3KTsiPmMucnVuKOKApik8L2NvZGU+PHNw
YW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyI+Jm5ic3A7d2l0aCBjb21wbGV0ZWx5
IGluZGVwZW5kZW50IHNldHMgb2YmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5
OiBzYW5zLXNlcmlmOyI+YmluZGluZ3MsIGV4Y2VwdCBmb3IgdGhlJm5ic3A7PC9zcGFuPjxjb2Rl
IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4IDAuNGVtOyBib3JkZXItcmFkaXVzOiAz
cHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNDcsIDI0NywgMjQ3KTsiPmssdixrMix2MjwvY29k
ZT48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7Ij4mbmJzcDttYW5kYXRlZCBi
eSB0aGUgY2FycmllcuKAmXMmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBz
YW5zLXNlcmlmOyI+aW5mb3JtYXRpb24gY29udGVudC48L3NwYW4+PC9kaXY+PGRpdj48Zm9udCBm
YWNlPSJzYW5zLXNlcmlmIj48YnI+PC9mb250PjwvZGl2PjxkaXY+PGZvbnQgZmFjZT0ic2Fucy1z
ZXJpZiI+Q29ycmVjdDwvZm9udD48L2Rpdj48ZGl2Pjxmb250IGZhY2U9InNhbnMtc2VyaWYiPjxi
cj48L2ZvbnQ+PC9kaXY+PGRpdj48Zm9udCBmYWNlPSJzYW5zLXNlcmlmIj4mZ3Q7Jm5ic3A7PC9m
b250PgoKPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyI+SUlSQyZuYnNwOzwv
c3Bhbj48L2Rpdj48ZGl2Pjxmb250IGZhY2U9InNhbnMtc2VyaWYiPjxicj48L2ZvbnQ+PC9kaXY+
PGRpdj48Zm9udCBmYWNlPSJzYW5zLXNlcmlmIj5Zb3UgYXJlIHJlbWVtYmVyaW5nIGNvcnJlY3Rs
eSwgdGhlcmUgaXMgYSBtZXRob2QgdG8gc2VhcmNoIGZvciBhIHZhbHVlIGluIGEgYENhcnJpZXJg
LCBgQ2FycmllciNnZXQoPC9mb250PkV4dGVudExvY2FsJmx0O1QmZ3Q7IGtleSlgLCBidXQgeW91
IGNhbm5vdCBpdGVyYXRlIG92ZXIgRXh0ZW50TG9jYWwgdGhhdCBhcmUgYm91bmQgdG8gdGhhdCBD
YXJyaWVyLjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+Jmd0OyZuYnNwOwoKPHNwYW4gc3R5bGU9
ImZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyI+YWx0aG91Z2ggbWF5YmUgdXNlPC9zcGFuPjxzcGFu
IHN0eWxlPSJmb250LWZhbWlseTogc2Fucy1zZXJpZjsiPmNhc2VzIHdpbGwgZXZlbnR1YWxseSBj
YWxsIFsuLi5dPC9zcGFuPjxicj48ZGl2Pjxicj48L2Rpdj48L2Rpdj48ZGl2PkkgYW0gaW50ZXJl
c3RlZCB0byBrbm93IHdoYXQgdXNlIGNhc2VzIG1heSBhcmlzZSwgSSBjYW4ndCBpbWFnaW5lIGV4
cG9zaW5nIHRoZSBrZXlzIG9mIGEgY2FycmllciB0byBiZSBub3RoaW5nIGJ1dCBtZWFuaW5nbGVz
cy4gQSBgQ2FycmllcmAgaXMgYmFzaWNhbGx5IGFuIGBFeHRlbnRMb2NhbCZsdDtUJmd0OyB0byBU
YCZuYnNwOyBtYXAuIElmIGB4YCBpcyBhIGBDYXJyaWVyYCB0aGVyZSBpcyBubyB3YXkgdG8gdmVy
aWZ5IGEgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZSBjdXJyZW50IGV4dGVudCBhbmQgYHhgLCBzbyB0
aGUgb25seSB0aGluZyBJIGNhbiB0aGluayBvZiBpcyB0byBjaGVjayBpZiBzb21lIGBFeHRlbnRM
b2NhbCZsdDtUJmd0OyBMT0NBTGAgaXMgYWxyZWFkeSBib3VuZCBpbiBgeGAgYmVmb3JlIGNhbGxp
bmcgdG8gYHJ1bi9jYWxsYCwgYnV0IGA8Zm9udCBmYWNlPSJzYW5zLXNlcmlmIj5DYXJyaWVyI2dl
dCg8L2ZvbnQ+RXh0ZW50TG9jYWwmbHQ7VCZndDspYCBhbHJlYWR5IHNvbHZlcyB0aGlzIHByb2Js
ZW0uPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5BbHNvLCBpbiBnZW5lcmFsLCBleHBvc2luZyB0
aGUga2V5IHNldCBvZiBhIGBDYXJyaWVyYCBpcyBhIHByaW1lIHNvdXJjZSBmb3Igc2VjdXJpdHkg
cHJvYmxlbXMuIEJ5IGV4cG9zaW5nIHRoZSBrZXlzIHlvdSBhcmUgYWxsb3dpbmcgYW55b25lIHdp
dGggYWNjZXNzIHRvIHRoZSBgQ2FycmllcmAgdGhlIGFiaWxpdHkgdG8gdmlldyBhbmQgb3ZlcnJp
ZGUgYWxsIG9mIGl0cyBrZXlzLCBpbmNsdWRpbmcgcHJpdmF0ZSBvbmVzLjwvZGl2PjxkaXY+PGJy
PjwvZGl2PjxkaXY+Jmd0OyZuYnNwOzxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogc2Fucy1zZXJp
ZjsiPmxhcmdlciBiaW5kaW5nLW1hcCBBUEkgc25lYWtzIHRocm91Z2g8L3NwYW4+PC9kaXY+PGRp
dj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7Ij48YnI+PC9zcGFuPjwvZGl2
PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyI+V2VsbC4uLiBJdCBp
cyBub3QgcGFydCBvZiB0aGUgQVBJLCBidXQgdXNpbmcgcmVmbGVjdGlvbiBpdCBpcyBwb3NzaWJs
ZSB0byBnZXQgYSBob2xkIG9uIHRoZSBgU25hcHNob3RgIG9iamVjdCwgYXMgd2VsbCBhcyB0aGUg
YFNuYXBzaG90LnByZXZgIGFuZCBgQ2Fycmllci5wcmV2YCBmaWVsZHMsIHdoaWNoIGFsbG93IHlv
dSB0byBmaW5kIGFsbCBvZiB0aGUgYEV4dGVudExvY2FsYHMgdGhhdCBleGlzdCBpbiB0aGUgY3Vy
cmVudCBleHRlbnQuPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBz
YW5zLXNlcmlmOyI+PGJyPjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LWZhbWls
eTogc2Fucy1zZXJpZjsiPiZndDsmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5
OiBzYW5zLXNlcmlmOyI+QSB2ZXJ5IGRpZmZlcmVudCBkZXNpZ248L3NwYW4+PC9kaXY+PGRpdj48
c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7Ij48YnI+PC9zcGFuPjwvZGl2Pjxk
aXY+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyI+UmVtZW1iZXIgeW91IG5l
ZWQgdG8gc3VwcG9ydCBzaXR1YXRpb25zIGxpa2U6PC9zcGFuPjwvZGl2PjxkaXY+PGJyPjwvZGl2
PjxkaXY+PGZvbnQgZmFjZT0ic2Fucy1zZXJpZiI+YGBgamF2YTwvZm9udD48L2Rpdj48ZGl2Pjxm
b250IGZhY2U9InNhbnMtc2VyaWYiPkV4dGVudExvY2FsLndoZXJlKGssIHYpPC9mb250PjwvZGl2
PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7LnJ1bigoKSAtJmd0OyB7PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwO0V4dGVudExvY2FsLndoZXJlKGsyLCB2MikucnVuKC4uLik7PC9kaXY+PGRp
dj4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDt9KTs8YnI+PC9kaXY+PGRpdj48Zm9udCBmYWNlPSJzYW5zLXNlcmlmIj5g
YGA8L2ZvbnQ+PC9kaXY+PGRpdj48Zm9udCBmYWNlPSJzYW5zLXNlcmlmIj48YnI+PC9mb250Pjwv
ZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyI+U28gZWl0aGVy
IHlvdSBhcmUga2VlcGluZyB0aGUgZnVsbCBleHRlbnQgaW4gdGhlIGNhcnJpZXIsIG9yIG1ha2Ug
aXQgbXV0YWJsZSBhbmQgbGVhdmUgdGhlIHJlc3QgYXMgaXQgaXMgbm93LiZuYnNwOyZuYnNwOzwv
c3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogc2Fucy1zZXJpZjsiPjxi
cj48L3NwYW4+PC9kaXY+PGRpdj48Zm9udCBmYWNlPSJzYW5zLXNlcmlmIj5JbnRlcm5hbGx5LCB1
c2luZyBhIHN0YXRpYyBwYXJhbWV0ZXIgYDwvZm9udD5KYXZhTGFuZ0FjY2VzcyBKTEFgLCB0aGUg
ZnVsbCBleHRlbnQgY3VycmVudCBpcyBzYXZlZCwgYW5kIHRoZSBgQ2FycmllcmAgaXMgYSBjbGFz
cyB0aGF0IGhlbHBzIHlvdSBzdG9yZSBzdHVmZiBpbiB0aGUgZXh0ZW50ICh0aGUgYENhcnJpZXJg
IHNhdmVzIHRoZSBrZXktdmFsdWUgcGFpcnMsIGFuZCB3aGVuIHlvdSBjYWxsIHRoZSBtZXRob2Qg
YHJ1bi9jYWxsYCBpdCBhZGRzIGl0IHRvIHRoZSBjdXJyZW50IGV4dGVudCksIHNvIHRoZSBmaXJz
dCBvcHRpb24gd2lsbCBuZWVkbGVzc2x5IHRvdWNoIGludGVybmFsIGNvbXBvbmVudHMsIGFuZCBt
YWtpbmcmbmJzcDs8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7Ij5zdHVmZiBt
dXRhYmxlIGlzIGFsd2F5cyBhIHBsYWNlIGZvciBkaXNhc3RlcnMuPC9zcGFuPjwvZGl2PjxkaXY+
PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyI+PGJyPjwvc3Bhbj48L2Rpdj48
ZGl2PjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogc2Fucy1zZXJpZjsiPlRvIGV4cGxhaW4gYSBi
aXQgb24gdGhpcywgYXBhcnQgZnJvbSBgQ2FycmllcmAsIHRoZXJlIGV4aXN0cyBhIChwcm90ZWN0
ZWQpIGNsYXNzIGNhbGxlZCBgU25hcHNob3RgLCZuYnNwOzwvc3Bhbj5hIGBTbmFwc2hvdGAgaXMg
YmFzaWNhbGx5IGEgbGlua2VkIGxpc3Qgb2YgYENhcnJpZXJgcy48L2Rpdj48ZGl2PjxzcGFuIHN0
eWxlPSJmb250LWZhbWlseTogc2Fucy1zZXJpZjsiPjxicj48L3NwYW4+PC9kaXY+PGRpdj48c3Bh
biBzdHlsZT0iZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7Ij51c2luZyB0aGUgYDwvc3Bhbj4KCkph
dmFMYW5nQWNjZXNzPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyI+YCBpcyBh
IGNsYXNzIGluIHRoZSBpbnRlcm5hbCZuYnNwO21vZHVsZSwgdXNpbmcgdGhpcyBvYmplY3QgeW91
IGNhbiBhY2Nlc3MgdGhlIGA8L3NwYW4+U25hcHNob3RgIG9mIHRoZSBjdXJyZW50IGV4dGVudCAo
YW4gaW5zdGFuY2Ugb2YgYFNuYXBzaG90YCkuPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5XaGVu
IHVzaW5nIGBydW4vY2FsbGAsIHRoZSBjYXJyaWVyICgxKSBnZXRzIHRoZSBjdXJyZW50Jm5ic3A7
CgpleHRlbnQmbmJzcDsoYHByZXZgKSwgKDIpIGNyZWF0ZSBhIG5ldyBgU25hcHNob3RgKGBiYCkg
d2hvc2UgdmFsdWUgaXMgYHRoaXNgIGFuZCB0YWlsIGJlIGBwcmV2YCBhbmQgKDMpIHNldCB0aGUg
Y3VycmVudCBleHRlbnQgdG8gYGJgLjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+V2hlbiBjYWxs
aW5nIGBMb2NhbEV4dGVudCNnZXQoa2V5KWAsICgxKSBgTG9jYWxFeHRlbnRgIGdldCB0aGUgY3Vy
cmVudCBleHRlbnQsICgyKSBydW4gb24gZWFjaCBgU25hcHNob3RgLCAoMykgaW4gZWFjaCBgU25h
cHNob3RgIGl0IHJ1biBvdmVyIGV2ZXJ5IGBDYXJyaWVyYCBhbmQgc2VhcmNoIGZvciBga2V5YDwv
ZGl2Pg==" style="height:0px;width:0px;max-height:0px;max-width:0px;overflow:hidden;font-size:0em;padding:0px;margin:0px"></div></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr"><br></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Aug 16, 2022 at 10:22 PM John Rose <<a href="mailto:john.r.rose@oracle.com">john.r.rose@oracle.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><u></u>
<div><div style="font-family:sans-serif"><div style="white-space:normal">
<p dir="auto">I’m very glad to see this moving towards completion.<br>
Better threads richly deserve better thread locals!</p>
<p dir="auto">I’d like to check my understanding of the intermediate<br>
type <code style="margin:0px;padding:0px 0.4em;border-radius:3px;background-color:rgb(247,247,247)">Carrier</code>. Is it the case that the information content<br>
of a carrier made by <code style="margin:0px;padding:0px 0.4em;border-radius:3px;background-color:rgb(247,247,247)">c=ExtentLocal.where(k,v)</code> is just exactly<br>
the pair <code style="margin:0px;padding:0px 0.4em;border-radius:3px;background-color:rgb(247,247,247)">k,v</code>? And then, after that, I suppose a carrier made<br>
by <code style="margin:0px;padding:0px 0.4em;border-radius:3px;background-color:rgb(247,247,247)">c.where(k2,v2)</code> contains exactly <code style="margin:0px;padding:0px 0.4em;border-radius:3px;background-color:rgb(247,247,247)">k,v,k2,v2</code>. (But if<br>
<code style="margin:0px;padding:0px 0.4em;border-radius:3px;background-color:rgb(247,247,247)">k==k2</code> then the information content is just <code style="margin:0px;padding:0px 0.4em;border-radius:3px;background-color:rgb(247,247,247)">k2,v2</code>.)</p>
<p dir="auto">And if that is true, then I can store a <code style="margin:0px;padding:0px 0.4em;border-radius:3px;background-color:rgb(247,247,247)">Carrier</code> in a global<br>
variable, even pass it to five other threads, and have each<br>
of them call <code style="margin:0px;padding:0px 0.4em;border-radius:3px;background-color:rgb(247,247,247)">c.run(…)</code> with completely independent sets of<br>
bindings, except for the <code style="margin:0px;padding:0px 0.4em;border-radius:3px;background-color:rgb(247,247,247)">k,v,k2,v2</code> mandated by the carrier’s<br>
information content.</p>
<p dir="auto">What I’m trying to exclude here is that a <code style="margin:0px;padding:0px 0.4em;border-radius:3px;background-color:rgb(247,247,247)">Carrier</code> somehow<br>
threads in the ambient binding map for the current extent,<br>
as non-locally defined by all of the caller frames, plus<br>
whatever bindings might have been provided when the current<br>
thread was launched.</p>
<p dir="auto">IIRC you have chosen not to provide general methods for working<br>
with binding maps. (There is no key/value iterator on <code style="margin:0px;padding:0px 0.4em;border-radius:3px;background-color:rgb(247,247,247)">Carrier</code>.)<br>
And then reifying the very special binding map in the current<br>
extent is right out. I think this is fine, although maybe use<br>
cases will eventually call for map-like views on both local<br>
carrier multi-tuples and grand non-local binding maps. Those<br>
can be added later if needed.</p>
<p dir="auto">So, my asking to confirm the very finite and local information<br>
content of the type <code style="margin:0px;padding:0px 0.4em;border-radius:3px;background-color:rgb(247,247,247)">Carrier</code> is really me double-checking<br>
that no larger binding-map API sneaks through the current JEP<br>
API.</p>
<p dir="auto">A very different design would sneak in an reified map pointer<br>
into every result of <code style="margin:0px;padding:0px 0.4em;border-radius:3px;background-color:rgb(247,247,247)">c=ExtentLocal.where(k,v)</code> such that<br>
bindings available in <code style="margin:0px;padding:0px 0.4em;border-radius:3px;background-color:rgb(247,247,247)">c.run(…)</code> would come only from c<br>
and its uplevel pointer, completely blocking any bindings<br>
present at the call to <code style="margin:0px;padding:0px 0.4em;border-radius:3px;background-color:rgb(247,247,247)">c.run</code>. I guess such bindings would<br>
no longer be properly called “extent-local”; only the binding<br>
map root would be extent local but it would be subject to<br>
radical editing on each call to <code style="margin:0px;padding:0px 0.4em;border-radius:3px;background-color:rgb(247,247,247)">c.run(…)</code>.</p>
<p dir="auto">Make sense?</p>
</div></div></div>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr">Holo The Wise Wolf Of Yoitsu</div></div>