Ich versuche einen Vektor mit Subvektoren zu erstellen, die aus Elementen bestehen, die aus einem anderen Vektor mit Hilfe eines Vektors von Subvektorindizes entnommen wurden. Jedes Element in b
entspricht dem Sub-Vektor-Index, den die Elemente in a
haben sollten, wenn sie in c
eingegeben werden.Haskell create vector with subvectors using indexes
import Data.Vector
let a = fromList [9,2,3,7,4,1,8,5]
let b = fromList [3,3,2,0,1,1,2,2]
let c = fromList [ a ! k | k <- b ]
Expected c = [[7],[4,1],[3,8,5],[9,2]]
Ich bin ein bisschen stecken, wird der Fehler immer
"konnte nicht mit den tatsächlichen Typ Vector Integer in Anw Liste Verständnis k < erwarteten Typ [Int] match - b"
Sie [ 'backpermute'] suchen sind (https://hackage.haskell.org/package/vector-0.11.0.0/candidate/docs/ Daten-Vektor.html # g: 17)? –
Nein, der Indexvektor enthält in Backpermute die Indizes der Werte, die aus 'a' genommen werden sollten, aber mein Indexvektor 'b' enthält die Unterlistenindizes, in die die Elemente eingefügt werden sollen. – tsorn
Ziemlich sicher, dass Sie dieses Verhalten nicht bekommen werden, ohne sich selbst mit ST und intermediären mutablen Vektoren zu beschäftigen; Ich würde nicht erwarten, dass das eingebaut wird. –