Поиск…


замечания

Он [Data.Vector] делает упор на очень высокую производительность благодаря слиянию циклов, сохраняя при этом богатый интерфейс. Основными типами данных являются массивы в коробке и распакованные массивы, а массивы могут быть неизменными (чистыми) или изменяемыми. Массивы могут содержать элементы Storable, подходящие для перехода на C и из C, и вы можете конвертировать между типами массивов. Массивы индексируются неотрицательными значениями 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, filter '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