サーチ…


備考

この[Data.Vector]は、リッチなインターフェイスを保持しながら、ループフュージョンを通じて非常に高いパフォーマンスを重視しています。主なデータ型はボックス化された配列とボックス化されていない配列であり、配列は不変(純粋)または可変である可能性があります。配列には、Cとの間でやりとりするのに適したStorable要素が格納されている場合があり、配列の型を変換できます。配列は、負でないInt値によってインデックス付けされます。

Haskell Wikiには次の推奨事項があります。

一般に:

  • エンドユーザーはほとんどの場合、Data.Vector.Unboxedを使用する必要があります
  • より複雑な構造体を格納する必要がある場合は、Data.Vector
  • Cに渡す必要がある場合は、Data.Vector.Storableを使用します。

図書館の作家の場合。

  • 汎用インターフェースを使用して、ライブラリの柔軟性を最大限に確保してください:Data.Vector.Generic

Data.Vectorモジュール

Data.Vectorのによって提供されるモジュールベクターは、配列を操作するための高性能ライブラリです。

Data.VectorをインポートしData.VectorVector使用を開始するのは簡単です。

Prelude> import Data.Vector
Prelude Data.Vector> let a = fromList [2,3,4]
 
Prelude Data.Vector> a
fromList [2,3,4] :: Data.Vector.Vector
 
Prelude Data.Vector> :t a
a :: Vector Integer

あなたは多次元配列を持つことさえできます:

Prelude Data.Vector> let x = fromList [ fromList [1 .. x] | x <- [1..10] ]
 
Prelude Data.Vector> :t x
x :: Vector (Vector Integer)

ベクトルをフィルタリングする

奇数要素をフィルタリングする:

Prelude Data.Vector> Data.Vector.filter odd y
fromList [1,3,5,7,9,11] :: Data.Vector.Vector

ベクトルのマッピング( `map`)と縮小(` fold`)

ベクターは可能map D「とfold'd,フィルタ'd and zip`'d:

Prelude Data.Vector> Data.Vector.map (^2) y
fromList [0,1,4,9,16,25,36,49,64,81,100,121] :: Data.Vector.Vector

単一の値に減らす:

Prelude Data.Vector> Data.Vector.foldl (+) 0 y
66

複数のベクトルの操作

2つの配列をペアの配列にジップします。

Prelude Data.Vector> Data.Vector.zip y y
fromList [(0,0),(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10),(11,11)] :: Data.Vector.Vector


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow