Проблема
У меня есть вектор a размера N, содержащий выборочные данные, и другой вектор b размера M (N>M), содержащих индексы. Я хочу получить вектор c размера N, содержащий отфильтрованные элементы из a strong> на основе индексов в b.
Вопрос
Можно ли реализовать желаемую функцию без использования понимания списка, только базовые функции более высокого порядка, такие как map, zipWith, filter и т. д. (точнее, их эквиваленты mapV, zipWithV, filterV и т. д.)
Предпосылки:
Я использую встроенный предметно-ориентированный язык Haskell (ForSyDe, модуль ForSyDe.Shallow.Vector), ограничено набором функций аппаратного синтеза. В целях соблюдения методологии проектирования мне разрешено использовать только предоставленные функции (таким образом, я не могу использовать списки и т. д.).
map
,filter
,zipWith
и т. д. На самом деле, списки - это просто синтаксический сахар для монадических функций, и ваш типVector
можно сделать монадой, так что вы могли бы просто написать версию понимания списка и включитеMonadComprehensions
. - person user2407038   schedule 24.07.2014