25 lines
841 B
Java
25 lines
841 B
Java
public sealed interface List<T> permits Cons, Empty {}
|
|
|
|
public record Cons<T>(T a, List<T> l) implements List<T> {}
|
|
public record Empty<T>() implements List<T> {}
|
|
public record Pair<T1, T2>(T1 a, T2 b) {}
|
|
|
|
public class PatternMatching {
|
|
public zip(Cons(x, xs), Cons(y, ys)) {
|
|
return new Cons<>(new Pair<>(x, y), zip(xs, ys));
|
|
}
|
|
public zip(Empty(), Empty()) { return new Empty<>(); }
|
|
|
|
/*public zip(Empty x, Cons y) { return new Empty(); }
|
|
public zip(Cons x, Empty y) { return new Empty(); }
|
|
public zip(Empty x, Empty y) { return new Empty(); }
|
|
*/
|
|
|
|
/*
|
|
Generiert:
|
|
Cons zip<T>(Cons(T x, Cons xs), Cons(T y, Cons ys))
|
|
Cons zip<T>(Cons(T x, Cons xs), Cons(T y, Empty ys))
|
|
Cons zip<T>(Cons(T x, Empty xs), Cons(T y, Cons ys))
|
|
Cons zip<T>(Cons(T x, Empty xs), Cons(T y, Empty ys))
|
|
*/
|
|
} |