2024-08-22 13:13:25 +00:00
|
|
|
sealed interface List<T> permits LinkedElem, Elem {}
|
|
|
|
|
|
|
|
public record LinkedElem<T>(T a, List<T> l) implements List<T> {}
|
|
|
|
public record Elem<T>(T a) implements List<T> {}
|
|
|
|
|
|
|
|
public class SwitchAppend {
|
|
|
|
public append(l1, l2) {
|
|
|
|
return switch(l1) {
|
|
|
|
case LinkedElem(a, Elem(e)) -> new LinkedElem<>(a, new LinkedElem<>(e, l2));
|
|
|
|
case LinkedElem(a, r) -> new LinkedElem<>(a, append(r, l2));
|
|
|
|
//Alternativ:
|
|
|
|
//case LinkedElem(a, LinkedElem(e, r)) -> new LinkedElem<>(a, append(new LinkedElem(e, r), l2));
|
2024-09-26 09:31:24 +00:00
|
|
|
//default -> null;
|
2024-08-22 13:13:25 +00:00
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|