Discussion: High-level functions that can convert between vector types
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 30/100
Direzione di ricerca
Inizia leggendo le API map, convert e generate di Data.Vector.Generic, quindi segui il commento collegato sul problema sottostante. Confronta il tipo convertingMap proposto con la soluzione esistente e con le problematiche relative a stream-fusion; il lavoro sarebbe concluso solo dopo aver definito un’API e accettato esplicitamente un percorso di implementazione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Edit: Issue description of the underlying problem https://github.com/haskell/vector/issues/373#issuecomment-808821411
Below is the original question that led to it:
I often work with indices that I'd like to store in Unboxed.Vector Int vectors, and Generic.Vector vector a vectors into which those indices point.
At some point I have to resolve the indices back into the original generic vector type. I would like to do:
import qualified Data.Vector.Generic as VG
import qualified Data.Vector.Unboxed as VU
myIndexVector :: VU.Vector Int
atIndices :: (VG.Vector vector a) => vector a -> VU.Vector Int -> vector a
atIndices vals indices = VG.map (vals VG.!) indices
(This is basically the same as myVector[indicesVector] does in Python's numpy.)
However in the above, VG.map (xs VG.!) indices does not typecheck, beause map requires that the input vector type be the same as the output vector type.
Thus it would be awesome to have a convertingMap function that combines map with convert, of type:
convertingMap :: (Vector v a, Vector w b) => (a -> b) -> v a -> w b
Edit: Solution for this specific function due to @lehins in https://github.com/haskell/vector/issues/373#issuecomment-808820750.
Alternatives considered:
convertingMap vals f = VG.map f (VG.convert vals)orVG.convert (VG.map f vals)isn't great, because it requires thatvandwcan store the same elements, which sometimes isn't the case, e.g. I can have a dataD1that only works withUnboxedand dataD2that only works withStorable.- I currently use:
but I don't know if that's optimal stream-fusion-wise.convertingVectorMap :: (VG.Vector vectorA a, VG.Vector vectorB b) => (a -> b) -> vectorA a -> vectorB b convertingVectorMap f va = VG.generate (VG.length va) $ \i -> f (va VG.! i)
- Lingua principale
- Haskell
- Stelle
- 401
- Fork
- 145
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Non abbiamo ancora controllato i file di configurazione di questo progetto. Parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di haskell/vector
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 68/100
-
`Size` can be a newtype.Aperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 55/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
Tutte le issue di haskell/vector
Issue simili
-
Add DataHaskell ?Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 76/100
severo/awesome-parquet#50 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
objectionary/phino#1444 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
enhancement triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
simplex-chat/simplex-chat#7585 ·
I maintainer di solito rispondono entro 1 giorno
-
typst-0.12Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
commercialhaskell/stackage#8127 ·