由於對this question的回答,我希望能夠從Data.Vector.Unboxed.Unbox(反之亦然)的實例構造Foreign.Storable.Storable的實例。這可能嗎?在可存儲和開箱之間進行轉換
我知道的最接近的東西是vector-th-unbox,但這隻會創建一個不可裝箱的實例。
由於對this question的回答,我希望能夠從Data.Vector.Unboxed.Unbox(反之亦然)的實例構造Foreign.Storable.Storable的實例。這可能嗎?在可存儲和開箱之間進行轉換
我知道的最接近的東西是vector-th-unbox,但這隻會創建一個不可裝箱的實例。
我可以想象一個非常黑客的方式,從unbox到可存儲,但它是真正hacky和效率低下!事實上,通過它,我實際上並不想寫出來。這個概念是,你可以用一個Unbox做的所有事情都可以在一個非盒裝的矢量中使用。因此,您可以使用單例元素初始化一個未裝箱的向量。鑑於上述元素,您可以創建一個持有它的向量,然後通過邪惡撬開您的向量,並將這些字節直接用於Storable實例。你可以同樣擺脫另一種方式。
但我不知道你爲什麼想這樣做。默認情況下可存儲的大多數數據類型也都是Unbox,反之亦然。而對於那些他們不是,派生Storable很容易 - 無論是手動,還是一個工具。
檢查vector
包。使用Data.Vector.convert :: (Vector v a, Vector w a) => v a -> w a
。
由於周慧敏已經回答了你可以使用convert
功能是Data.Vector.Generic
模塊可供選擇:http://hackage.haskell.org/package/vector/docs/Data-Vector-Generic.html#v:convert
(剛注意到我是一個graverobber ...這個問題現在是2歲) – fho
我似乎無法找到你在[矢量包(HTTP提的轉換功能: //hackage.haskell.org/packages/archive/vector/0.5/doc/html/Data-Vector.html)。此外,基於類型簽名,我不明白它會有什麼幫助? –
請看'Data.Vector'模塊/文檔的最後部分。 – vivian
我看到的全部內容都是'toList'和'fromList',一個[hoogle搜索](http://www.haskell.org/hoogle/?hoogle=convert)什麼都沒帶。 –