<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div class="markdown-here-wrapper" data-md-url="" style="">
<p style="margin: 0px 0px 1.2em !important;">We have added this to
21, in the form of an “or” instance method:</p>
<p style="margin: 0px 0px 1.2em !important;"><a href="https://git.openjdk.org/jdk/pull/13954" class="moz-txt-link-freetext">https://git.openjdk.org/jdk/pull/13954</a></p>
<p style="margin: 0px 0px 1.2em !important;">So:</p>
<pre style="font-size: 0.85em; font-family: Consolas, Inconsolata, Courier, monospace;font-size: 1em; line-height: 1.2em;margin: 1.2em 0px;"><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;white-space: pre; overflow: auto; border-radius: 3px; border: 1px solid rgb(204, 204, 204); padding: 0.5em 0.7em; display: block !important;">SymbolLookup MY_LOOKUP = libraryLookup("lib1", arena)
.or(libraryLookup("lib2", arena))
.or(libraryLookup("lib3", arena))
.or(libraryLookup("lib4", arena))
...
.or(libraryLookup("libN", arena));
</code></pre>
<p style="margin: 0px 0px 1.2em !important;">Cheers<br>
Maurizio</p>
<p style="margin: 0px 0px 1.2em !important;">On 10/05/2023 15:26,
Michael Hall wrote:</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;">
<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 !important;">On May 10, 2023,
at 8:52 AM, Maurizio Cimadamore</p>
<p style="margin: 0px 0px 1.2em !important;"><a href="http://mailto:maurizio.cimadamore@oracle.com">maurizio.cimadamore@oracle.com</a>
wrote:</p>
<p style="margin: 0px 0px 1.2em !important;">On 10/05/2023
14:05, Michael Hall wrote:</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 !important;">Basically
you’re saying you need a length 5 chain that needs to<br>
be searched for the leaf? Yes, ultimately you would at
some<br>
point. Possibly you would be over working a lambda? I
thought it<br>
might be more a convenience to the developer if they have
a<br>
collection of Path’s they could specify them in one
invocation of<br>
libraryLookup and the api would manage the necessary
multiple<br>
SymbolLookup’s searching for the leaf. The developer can
of<br>
course manage this themselves although again at some point
maybe<br>
not with a lambda.</p>
<p style="margin: 0px 0px 1.2em !important;">What I’m saying
is this:</p>
</blockquote>
<p style="margin: 0px 0px 1.2em !important;"><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;">SymbolLookup MY_LOOKUP = SymbolLookup.compose(
libraryLookup("lib1", arena), libraryLookup("lib2", arena),
libraryLookup("lib3", arena), libraryLookup("lib4", arena), ...
libraryLookup("libN", arena));</code></p>
<p style="margin: 0px 0px 1.2em !important;">Doesn’t seem bad.
You get back a single lookup, which is then used<br>
to perform several lookups. If we can achieve same behavior
via<br>
simple composition, that seems better/more flexible to me.
Symbol<br>
lookups are created once (at the start of your application)
and<br>
then “forgot”, so I don’t think there’s a lot of value in
making<br>
the above more succinct (at the expense of API regularity).</p>
<p style="margin: 0px 0px 1.2em !important;">Maurizio</p>
<p style="margin: 0px 0px 1.2em !important;">Ah, sorry, hadn’t
seen compose yet. No, not bad at all.</p>
</blockquote>
<p style="margin: 0px 0px 1.2em !important;">Thanks, Mike</p>
</blockquote>
<div title="MDH:V2UgaGF2ZSBhZGRlZCB0aGlzIHRvIDIxLCBpbiB0aGUgZm9ybSBvZiBhbiAib3IiIGluc3RhbmNlIG1ldGhvZDo8YnI+PGJyPmh0dHBzOi8vZ2l0Lm9wZW5qZGsub3JnL2pkay9wdWxsLzEzOTU0PGJy
Pjxicj5Tbzo8YnI+PGJyPmBgYDxicj5TeW1ib2xMb29rdXAgTVlfTE9PS1VQID0gbGlicmFyeUxv
b2t1cCgibGliMSIsIGFyZW5hKTxicj7CoMKgwqAgLm9yKGxpYnJhcnlMb29rdXAoImxpYjIiLCBh
cmVuYSkpPGJyPsKgwqDCoCAub3IobGlicmFyeUxvb2t1cCgibGliMyIsIGFyZW5hKSk8YnI+wqDC
oMKgIC5vcihsaWJyYXJ5TG9va3VwKCJsaWI0IiwgYXJlbmEpKTxicj7CoMKgwqAgLi4uPGJyPsKg
wqDCoCAub3IobGlicmFyeUxvb2t1cCgibGliTiIsIGFyZW5hKSk7PGJyPmBgYDxicj48YnI+Q2hl
ZXJzPGJyPk1hdXJpemlvPGJyPjxicj5PbiAxMC8wNS8yMDIzIDE1OjI2LCBNaWNoYWVsIEhhbGwg
d3JvdGU6PGJyPjxzcGFuIHN0eWxlPSJ3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGRpc3BsYXk6IGJs
b2NrOyB3aWR0aDogOTh2dzsiPiZndDsgPGJyPiZndDsmZ3Q7IE9uIE1heSAxMCwgMjAyMywgYXQg
ODo1MiBBTSwgTWF1cml6aW8gQ2ltYWRhbW9yZTxicj4mZ3Q7Jmd0OyAmbHQ7bWF1cml6aW8uY2lt
YWRhbW9yZUBvcmFjbGUuY29tJmd0OyB3cm90ZTo8YnI+Jmd0OyZndDsgPGJyPiZndDsmZ3Q7IDxi
cj4mZ3Q7Jmd0OyBPbiAxMC8wNS8yMDIzIDE0OjA1LCBNaWNoYWVsIEhhbGwgd3JvdGU6PGJyPiZn
dDsmZ3Q7Jmd0OyBCYXNpY2FsbHkgeW914oCZcmUgc2F5aW5nIHlvdSBuZWVkIGEgbGVuZ3RoIDUg
Y2hhaW4gdGhhdCBuZWVkcyB0bzxicj4mZ3Q7Jmd0OyZndDsgYmUgc2VhcmNoZWQgZm9yIHRoZSBs
ZWFmPyBZZXMsIHVsdGltYXRlbHkgeW91IHdvdWxkIGF0IHNvbWU8YnI+Jmd0OyZndDsmZ3Q7IHBv
aW50LiBQb3NzaWJseSB5b3Ugd291bGQgYmUgb3ZlciB3b3JraW5nIGEgbGFtYmRhPyBJIHRob3Vn
aHQgaXQ8YnI+Jmd0OyZndDsmZ3Q7IG1pZ2h0IGJlIG1vcmUgYSBjb252ZW5pZW5jZSB0byB0aGUg
ZGV2ZWxvcGVyIGlmIHRoZXkgaGF2ZSBhPGJyPiZndDsmZ3Q7Jmd0OyBjb2xsZWN0aW9uIG9mIFBh
dGjigJlzIHRoZXkgY291bGQgc3BlY2lmeSB0aGVtIGluIG9uZSBpbnZvY2F0aW9uIG9mPGJyPiZn
dDsmZ3Q7Jmd0OyBsaWJyYXJ5TG9va3VwIGFuZCB0aGUgYXBpIHdvdWxkIG1hbmFnZSB0aGUgbmVj
ZXNzYXJ5IG11bHRpcGxlPGJyPiZndDsmZ3Q7Jmd0OyBTeW1ib2xMb29rdXDigJlzIHNlYXJjaGlu
ZyBmb3IgdGhlIGxlYWYuIFRoZSBkZXZlbG9wZXIgY2FuIG9mPGJyPiZndDsmZ3Q7Jmd0OyBjb3Vy
c2UgbWFuYWdlIHRoaXMgdGhlbXNlbHZlcyBhbHRob3VnaCBhZ2FpbiBhdCBzb21lIHBvaW50IG1h
eWJlPGJyPiZndDsmZ3Q7Jmd0OyBub3Qgd2l0aCBhIGxhbWJkYS48YnI+Jmd0OyZndDsmZ3Q7IDxi
cj4mZ3Q7Jmd0OyBXaGF0IEknbSBzYXlpbmcgaXMgdGhpczo8YnI+Jmd0OyZndDsgPGJyPiZndDsm
Z3Q7IGBgYCBTeW1ib2xMb29rdXAgTVlfTE9PS1VQID0gU3ltYm9sTG9va3VwLmNvbXBvc2UoIDxi
cj4mZ3Q7Jmd0OyBsaWJyYXJ5TG9va3VwKCJsaWIxIiwgYXJlbmEpLCBsaWJyYXJ5TG9va3VwKCJs
aWIyIiwgYXJlbmEpLCA8YnI+Jmd0OyZndDsgbGlicmFyeUxvb2t1cCgibGliMyIsIGFyZW5hKSwg
bGlicmFyeUxvb2t1cCgibGliNCIsIGFyZW5hKSwgLi4uIDxicj4mZ3Q7Jmd0OyBsaWJyYXJ5TG9v
a3VwKCJsaWJOIiwgYXJlbmEpKTsgYGBgPGJyPiZndDsmZ3Q7IDxicj4mZ3Q7Jmd0OyBEb2Vzbid0
IHNlZW0gYmFkLiBZb3UgZ2V0IGJhY2sgYSBzaW5nbGUgbG9va3VwLCB3aGljaCBpcyB0aGVuIHVz
ZWQ8YnI+Jmd0OyZndDsgdG8gcGVyZm9ybSBzZXZlcmFsIGxvb2t1cHMuIElmIHdlIGNhbiBhY2hp
ZXZlIHNhbWUgYmVoYXZpb3IgdmlhPGJyPiZndDsmZ3Q7IHNpbXBsZSBjb21wb3NpdGlvbiwgdGhh
dCBzZWVtcyBiZXR0ZXIvbW9yZSBmbGV4aWJsZSB0byBtZS4gU3ltYm9sPGJyPiZndDsmZ3Q7IGxv
b2t1cHMgYXJlIGNyZWF0ZWQgb25jZSAoYXQgdGhlIHN0YXJ0IG9mIHlvdXIgYXBwbGljYXRpb24p
IGFuZDxicj4mZ3Q7Jmd0OyB0aGVuICJmb3Jnb3QiLCBzbyBJIGRvbid0IHRoaW5rIHRoZXJlJ3Mg
YSBsb3Qgb2YgdmFsdWUgaW4gbWFraW5nPGJyPiZndDsmZ3Q7IHRoZSBhYm92ZSBtb3JlIHN1Y2Np
bmN0IChhdCB0aGUgZXhwZW5zZSBvZiBBUEkgcmVndWxhcml0eSkuPGJyPiZndDsmZ3Q7IDxicj4m
Z3Q7Jmd0OyBNYXVyaXppbzxicj4mZ3Q7Jmd0OyA8YnI+Jmd0OyZndDsgPGJyPiZndDsgQWgsIHNv
cnJ5LCBoYWRu4oCZdCBzZWVuIGNvbXBvc2UgeWV0LiBObywgbm90IGJhZCBhdCBhbGwuPGJyPiZn
dDsgPGJyPiZndDsgVGhhbmtzLCBNaWtlPGJyPiZndDsgPGJyPjwvc3Bhbj48YnI+PGJyPg==" style="height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0;"></div>
</div>
</body>
</html>