An example of substituability test that is recursive
Brian Goetz
brian.goetz at oracle.com
Thu Jan 31 16:56:47 UTC 2019
Currently, `==` is almost useless on lambdas, as we disclaim nearly all promises. What this would mean is that `==` becomes slightly less useless and slightly more expensive. It’s not obvious this is a bad trade (or that it really matters, because people are discouraged from using `==` on lambdas anyway.)
> On Jan 31, 2019, at 11:53 AM, Remi Forax <forax at univ-mlv.fr> wrote:
>
> Thinking a little more about this example,
> i think it will be more common if we retrofit lambdas to be value type because a series of composition of lambdas is a kind of linked list in term of data structure in memory.
>
> For the composition of lambdas, a stack overflow is unlikely because otherwise calling the lambda will stack overflow too but it means that == will be slow (because it does a recursive comparison).
>
> Rémi
>
> ----- Mail original -----
>> De: "Remi Forax" <forax at univ-mlv.fr>
>> À: "Karen Kinnear" <karen.kinnear at oracle.com>
>> Cc: "valhalla-spec-experts" <valhalla-spec-experts at openjdk.java.net>
>> Envoyé: Jeudi 31 Janvier 2019 12:19:32
>> Objet: An example of substituability test that is recursive
>
>> Hi Karen,
>> here is an example that recurse to its death with the current prototype
>>
>> import java.lang.invoke.ValueBootstrapMethods;
>> import java.util.stream.IntStream;
>>
>> public class Substituable {
>> static value class Link {
>> private final int value;
>> private final Object next;
>>
>> public Link(int value, Object next) {
>> this.value = value;
>> this.next = next;
>> }
>>
>> static Object times(int count) {
>> return IntStream.range(0, count).boxed().reduce(null, (acc, index) -> new
>> Link(index, acc), (l1, l2) -> { throw null; });
>> }
>> }
>>
>>
>> public static void main(String[] args) {
>> var l = Link.times(1_000);
>>
>> //System.out.println(l == l);
>> System.out.println(ValueBootstrapMethods.isSubstitutable(l, l));
>> }
>> }
>>
>>
>> Rémi
More information about the valhalla-spec-observers
mailing list