Что мне нужно? [неупорядоченный список]
- ОЧЕНЬ легкая распараллеливание
- поддержка карты, фильтра и т.д.
- способность эффективно выполнять вычисления на основе массивов, например A = B + C, вроде массивов matlab.
- Генерация кода SIMD. Наверное, в ближайшем будущем об этом не может быть и речи, но я могу спросить:)
- поддержка матриц должна быть там, как минимум, более высокие размеры имеют более низкий приоритет прямо сейчас.
- возможность получить указатель на него и создать его с помощью указателя C.
- Поддержка других библиотек. IE, привязки к популярным C-математическим пакетам, i/o на диск или изображения, если массивы 2D
Что я вижу?
- Пакет массивов в haskell-платформе. Это благословенный и может выполнять параллельные
- Data.Vector. Имеет петлевый слияние, но не в платформе, поэтому его зрелость мне неизвестна.
- пакет repa, внесенный командой DPH, но не работает с любым стабильным ghc сегодня.
- Множество вариаций в уровне поддержки реализации массивов. Например, не кажется, что это простой способ сбросить 2D-вектор в файл изображения. IOW, сообщество haskell, по-видимому, не остановилось на реализации массива.
Так что, пожалуйста, помогите мне выбрать.
РЕДАКТИРОВАТЬ A = B + C означает элементное дополнение, а не конкатенацию списка