Ich lese Simon Thompson Haskell: The Craft of Functional Programming, und ich frage mich, wie funktionierts:Wie funktioniert diese Haskell-Funktion zum Berechnen von Permutationen mit List-Verständnis Arbeit?
perms [] = [[]]
perms xs = [ x:ps | x <- xs , ps <- perms (xs\\[x]) ]
ich nicht zu begreifen scheinen kann, wie das perms(xs\\[x])
funktionieren soll. Die Spur eines Zweielementliste zeigt:
perms [2,3]
[ x:ps | x <- [2,3] , ps <- perms ([2,3] \\ [x]) ] exe.1
[ 2:ps | ps <- perms [3] ] ++ [ 3:ps | ps <- perms [2] ] exe.2
...
Wie Sie exe.1
-exe.2
gehen?
Warum der Downvote? –
Weißt du was, ich bin ein Idiot. Das war die erste Spur, die ich vom Listenverständnis gesehen habe. Die Ablaufverfolgung zeigt alle Elemente der Liste, die einzeln erstellt werden sollen. Ich weiß nicht, warum ich dachte, dass die dritte Reihe nach unten das zweite Element der zu erstellenden Liste wäre. –