Cursus Raku / Functioneel, concurrent, reactief en webprogrammeren / Concurrent programmeren / Junctions

Autothreading

Wanneer je een junctie meegeeft aan iets dat één enkele waarde verwacht — een vergelijking of een gewone functie — past Raku die bewerking stilletjes toe op elke waarde achter de junctie en voegt het de resultaten weer tot een junctie samen. Dit heet autothreading.

Bij een junctie optellen telt bijvoorbeeld bij elk van haar waarden op:

my $j = 1 | 2 | 3;
say $j + 10; # any(11, 12, 13)

De + 10 werd afzonderlijk op 1, 2 en 3 toegepast, wat een nieuwe any-junctie any(11, 12, 13) gaf.

Bij een vergelijking klapt het samengevoegde resultaat in tot één enkele waarheidswaarde volgens de soort junctie:

say so all(3, 7, 2) > 0;  # True  — every value is positive
say so all(3, -1, 2) > 0; # False — not all are positive
say so none(1, 2, 3) == 5; # True — none of them is 5

Autothreading is wat juncties zo beknopt maakt: één vergelijking controleert veel waarden. In wezen zijn de controles onafhankelijk, dus Raku is vrij ze parallel te draaien — en daarom horen juncties van nature bij de gereedschapskist voor concurrency.

Praktijk

Maak de 1 quiz over de inhoud van dit onderwerp.

Cursusnavigatie

Quiz — Junctions   |   Quiz — Autothreading


💪 Of ga direct naar de oefeningen in deze sectie.