Thread iX -- Perl 6 Tutorial (12 answers)
Opened by roooot at 2009-05-04 14:37

moritz
 2009-05-05 10:09
#121183 #121183
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
2009-05-04T19:33:07 sid burn
Was ich bisher immer noch nicht verstehe ist das Beispiel mit den Junctions und den Prime Test. Wenn ich mal Kopieren darf.

Code: (dl )
1
2
3
sub primetest(Int $n) {
not any(2..$n-1) * any(2..$n-1) == $n;
}


Was ich mir derzeit nicht vorstellen kann ist was das ergebniss einer Multiplikation zwischen zwei Junction ist. Ich habe Junctions jedenfalls bisher immer als "Mengen" aufgefasst. Daher die Junction repräsentiert praktisch einen wert unter vielen.

Vielleicht kann jemand den ausdruck nochmal etwas genauer erklären?


Also, wenn ein Operator auf eine Junction trifft, findet autothreading statt, also
Code: (dl )
2 * any(a, b, c)

wird intern umgeschrieben zu
Code: (dl )
any(2*a, 2*b, 2*c)


Wenn jetzt das linke Argument auch eine Junction ist, findet das autothreading eben zweimal statt"
Code: (dl )
1
2
3
4
any(2,3) * any(a, b, c)
=> any(any(2,3)*a, any(2,3)*b, any(2,3)*c)
=> any(any(2*a, 3*a), any(2*b, 3*b), any(2*c, 3*c))
=> any(2*a, 3*a, 2*b, 3*b, 2*c, 3*c)


Wenn du Junctions als Menge auffassen willst, erzeugt ein binaerer Operator also das karthesische Produkt von zwei Mengen.

Ich hoffe, dass es damit ein bisschen klarer ist.

View full thread iX -- Perl 6 Tutorial