Raku-Kurs / Funktionale, nebenläufige, reaktive und Web-Programmierung / Nebenläufige Programmierung / Junctions / Junctions bauen

Quiz — Junctions

Was gibt das folgende Programm aus?

say so 4 == all(2, 4, 6);
0True
1False
0all(2, 4, 6)
04

Eine all-Junction ist nur wahr, wenn jeder Wert trifft. Die Prüfung 4 == all(2, 4, 6) fragt, ob 4 gleich 2 und 4 und 6 ist — was es nicht ist, das Ergebnis ist also False.

Neugierig, was es True machen könnte? Die linke Seite müsste zugleich gleich 2, 4 und 6 sein. Keine einzelne Zahl kann das — eine Junction links aber schon: Eine any-Junction, die alle drei dieser Werte enthält, funktioniert, denn dann gelingt jeder der Vergleiche. Die beiden Seiten müssen nicht gleich groß sein — links dürfen zusätzliche Werte stehen:

say so any(2, 4, 6, 8) == all(2, 4, 6); # True
say so any(2, 4)       == all(2, 4, 6); # False

Die erste ist True, weil any(2, 4, 6, 8) weiterhin gleich 2, 4 und 6 ist (die zusätzliche 8 schadet nicht). Die zweite ist False, weil der linken Seite eine 6 fehlt, links == 6 also scheitert.

Kursnavigation

Junctions bauen   |   Autothreading