Eine der Fragen, die in einem meiner Vorträge bis kam, war die folgende:Haskell Punktpunktnotation auf Liste - unerwartete Ausgabe
trips :: [(Int, Int, Int)]
trips = [ (x,y,z) | z <- [2..], y <- [2..z-1], x <- [2..y-1] ]
What is the first five elements output?
Jetzt dachte ich, ich war bewusst, wie Punktpunktnotation gearbeitet, aber als ich Setzen Sie die oben genannten in einen Compiler der Ausgabe ist:
(2, 3, 4), (2, 3, 5), (2, 4, 5), (3, 4, 5), (2, 3 , 6) usw.
Wie passiert das?
Ich dachte, wenn Dinge mit [2 ..] begannen, dann würden alle folgenden Listen mit zwei beginnen? z ist definiert als [2 ..] und zeigt niemals einmal 2 als drittes int an. Ich vermisse hier offensichtlich etwas, aber ich bin mir nicht ganz sicher was.
Stellen Sie sich eine For-Schleife vor, die die Verschachtelung von links nach rechts erhöht. – ThreeFx