Hi recently Clément BOUDEREAU has reported a bug on amber-dev and unrelated to 
that bug,
taking a look to the code I've noticed this


       int compareTo(final Value<T> o) {
            return switch (new Tuple<>(this, o)) {
                case Tuple<Value<T>, Value<T>>(Value.Infinite<T> _, 
Value.Infinite<T> _) -> 0;
                case Tuple<Value<T>, Value<T>>(Value.Infinite<T> _, 
Value.Fixed<T> _) -> 1;
                case Tuple<Value<T>, Value<T>>(Value.Fixed<T> _, 
Value.Infinite<T> _) -> -1;
                case Tuple<Value<T>, Value<T>>(Value.Fixed<T> fst, 
Value.Fixed<T> snd) ->
                    fst.value.compareTo(snd.value);
            };
        }

Here what Clément want is to match two values (here, "this" and "o") but the 
only way to do that is to wrap them into a pair (here named Tuple),
Should we not provide a way to match several values natively ?

Something like

        int compareTo(final Value<T> o) {
            return switch (this, o) {
                case (Value.Infinite<T> _, Value.Infinite<T> _) -> 0;
                case (Value.Infinite<T> _, Value.Fixed<T> _) -> 1;
                case (Value.Fixed<T> _, Value.Infinite<T> _) -> -1;
                case (Value.Fixed<T> fst, Value.Fixed<T> snd) ->
                    fst.value.compareTo(snd.value);
            };
        }

regards,
Rémi

Reply via email to