55 lines
1.6 KiB
Java
55 lines
1.6 KiB
Java
import java.lang.Integer;
|
|
import java.lang.String;
|
|
import java.lang.System;
|
|
import java.lang.Boolean;
|
|
import java.io.PrintStream;
|
|
|
|
import LazyList;
|
|
import Cons;
|
|
import Empty;
|
|
import Filter;
|
|
|
|
public class Primzahlen {
|
|
static LazyList from(Integer i) { return new Cons(i, () -> from(i+1)); }
|
|
|
|
/*LazyList filter(Fun1$$<Integer, Boolean> p, LazyList l) {
|
|
return switch(l) {
|
|
case Empty e -> e;
|
|
case Cons(Integer x, Fun0$$<LazyList> l1) ->
|
|
p.apply(x) ? new Cons(x, () -> filter(p, l1.apply())) : filter(p, l1.apply());
|
|
};
|
|
}*/
|
|
|
|
LazyList dropMul(Integer x, LazyList xs) {
|
|
return new Filter().filter(y -> (y % x != 0), xs);
|
|
}
|
|
|
|
LazyList del(LazyList xs) {
|
|
return new Cons(xs.fst(), () -> del(dropMul(xs.fst(), xs.rest())));
|
|
}
|
|
|
|
LazyList primes() {
|
|
return del(from(2));
|
|
}
|
|
|
|
LazyList take(Integer n, LazyList l) {
|
|
if (n == 0) return new Empty();
|
|
else return switch (l) {
|
|
case Empty() -> l;
|
|
case Cons(Integer x, l1) ->
|
|
new Cons(x, () -> take(n-1, l1.apply()));
|
|
};
|
|
};
|
|
|
|
public static void main(args) {
|
|
System.out.println(new Cons(1, () -> new Cons(2, () -> new Empty())).fst());
|
|
var l = new Cons(1, () -> new Cons(2, () -> new Cons(2, () -> new Empty())));
|
|
System.out.println(l);
|
|
var filtered = new Filter().filter(x -> x == 2, l);
|
|
System.out.println(filtered);
|
|
//System.out.println(from(1).rest().fst());
|
|
//Primzahlen pz = new Primzahlen();
|
|
//System.out.println(pz.take(10, pz.from(2)));
|
|
//System.out.println(pz.take(14, pz.primes()));
|
|
}
|
|
} |