Remi, Thank you. So there were two kinds of “recurse to its death” we talked about 1) expected behavior 2) surprise
This strikes me as the expected behavior - where we can set expectations. If we were to always return false - how would you make this kind of example work? thanks, Karen > On Jan 31, 2019, at 6:19 AM, Remi Forax <fo...@univ-mlv.fr> wrote: > > 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 >