Nella libreria hybrid-vectors di Edward Kmett sono presenti due moduli principali: Data.Vector.Hybrid
e Data.Vector.Mixed
. C'è uno big article scritto sulla motivazione dietro il primo. Quest'ultimo è menzionato di passaggio ma manca di spiegazioni. Sto cercando di capire a che tipo di uso è destinato. Ho notato due cose finora:Scopo di Data.Vector.Mixed
- C'è una typeclass
Mixed
conTypeable
vincoli. Non capisco la spiegazione negli haddock, ma sembra che i vincoliTypeable
debbano essere necessari per ripristinare le informazioni sul tipo o per eseguire il cast in modo sicuro ad un certo punto. - Il tipo di dati
Vector
è parametrizzato solo sul sottostanteMVector
. Questo è diverso dal moduloHybrid
in cui è stato parametrizzato su due tipi di vettore più una tupla.
Apprezzerei qualsiasi intuizione utile o (ancora meglio) piccoli esempi di casi d'uso. Grazie.
Non l'ho mai usato prima, ma credo che lo scopo sia solo quello di fornire operazioni che funzionano su tutte le combinazioni di tipi di vettore –
Penso che sto iniziando a capire. Con operazioni come 'head',' length' e 'indexM', questo non fa proprio nulla perché prendono solo un vettore come argomento (e ci sono già versioni di queste funzioni che funzionano su tutti gli altri tipi di vettore). Ma per 'zipWith', sembra un po 'utile perché ci sono due argomenti vettoriali. No, continuo a pensare che mi manchi qualcosa. –
Sì, penso che sia per le cose che richiedono più di un vettore come argomento. Immagino che le altre operazioni siano puramente per completezza (quindi non devi importare anche altri moduli) –