Карта Haskell / sortBy / findIndex и т. Д. Для массивов вместо списков - PullRequest
5 голосов
/ 04 ноября 2011

Я вижу, что вместо этого можно писать функции, такие как map / sortBy / findIndex и некоторые другие функции, связанные со списком, для массивов (по крайней мере, те, которые проиндексированы целыми числами). Это делается где-нибудь в стандартной библиотеке, или мне нужно свернуть свое?

Мне нужно использовать массив в моей программе для обновления на месте, но есть также несколько мест, в которых я хотел бы использовать некоторые из перечисленных выше функций списка. Является ли обратное преобразование между двумя лучшими решениями?

(Массивы, на которые я смотрел, взяты из Data.Array.IArray. Я также рад использовать любую другую библиотеку массивов, которая реализует эту функцию.)

Ответы [ 2 ]

5 голосов
/ 04 ноября 2011

Я рекомендую вам взглянуть на пакеты vector и vector-алгоритмы .Они содержат очень эффективные реализации многих общих операций над Int -индексированными массивами, как в изменяемых, так и в неизменяемых вариантах.

4 голосов
/ 04 ноября 2011

fmap (из Control.Monad) напоминает общую версию map, которая работает на всем, что поддерживает класс типа Functor. Array поддерживает это, поэтому вы можете использовать fmap вместо map для массива.

Как говорит Хаммар, вектор и векторные алгоритмы, вероятно, являются лучшим способом решения проблемы, если вам необходимо рассмотреть индексированные массивы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...