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

sid burn
 2009-05-05 19:36
#121253 #121253
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
2009-05-05T08:09:37 moritz
Wenn du Junctions als Menge auffassen willst, erzeugt ein binaerer Operator also das karthesische Produkt von zwei Mengen.

Hallo, der Satz war eher das entscheidene.

Für mich nochmal zusammengfest. Also bei Operatoionen auf Junctions, werden praktisch alle Werte der Junction bearbeitet. Das Ergebnis ist immer wieder auch eine neue Junction. Wird mit zwei Junctions operiert, wird wie du sagtest das kathesiche Produkt gebildet. Also jeder wird mit jedem anderen Wert Multipliziert. aus 2|3|4 * 2|3|4 wird dann praktisch:

2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
4 * 2 = 8
4 * 3 = 12
4 * 4 = 16

Die resultierende Junction ist dann 4|6|8|6|9|12|8|12|16 und mit dieser neuen Junction wird der vergleich gemacht. Wenn natürlich autothreading an ist, oder implementiert ist, wird das ganze parallelisiert auf mehrere Threads verteilt.

Zumindest kann ich mir so jetzt die any() * any() verknüpfung erklären. Allerdiengs hackt es bei mir noch bei deiner verkürzung die du im Artikel geschrieben hast.

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


Um es mal selber zu versuchen. Es wird wieder das kathesiche produkt gebildet. genauso wie bei einem any() * any(). Das ergebnis ist das gleiche, aber alle werte enthalten praktisch immer noch eine negierung. Wenn also verglichen wird und das ergebnis mit == $n wahr ist, wird es wegen dem none() nochmals negiert wodurch es dann falsch wird?
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread iX -- Perl 6 Tutorial