J'ai écrit une nouvelle bibliothèque qui a implémenté un générateur pour Java. C'est simple, sans thread et rapide.
Voici un exemple de génération de nombres de Fibonacci infinis :
public static Seq fibonacci() {
return c -> {
int a = 1;
int b = 1;
c.accept(a);
c.accept(b);
while (true) {
c.accept(b = a + (a = b));
}
};
}
L'interface Seq
est similaire à Stream
en Java et Sequence
en Kotlin, mais plus rapide que tous les deux.
Ici, imprimons les 7 premiers éléments de la série de Fibonacci
Seq fib = fibonacci();
fib.take(7).printAll(","); // => 1,1,2,3,5,8,13
Pour le problème original, produire tous les nœuds d'un arbre ? Une seule ligne suffit.
Seq seq = Seq.ofTree(root, n -> Seq.of(n.left, n.right));
6 votes
Je sais, je sais. Mais je pense que savoir plus de langues, c'est plus de puissance. De plus, le développement backend (que je fais) dans l'entreprise pour laquelle je travaille actuellement est fait en Java, donc je ne peux pas vraiment choisir le langage :(