수색…


비고

[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 가져 오면 Vector 사용을 쉽게 시작할 수 있습니다.

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

여러 벡터 작업

두 배열을 쌍으로 묶습니다.

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