【发布时间】:2014-07-24 08:27:43
【问题描述】:
问题
我有一个大小为 N 的向量 a 保存样本数据,另一个向量 b 大小 M (N>M) 持有索引。我想获得一个大小为 N 的向量 c,其中包含来自 a 的过滤元素strong> 基于 b 中的索引。
问题
是否可以在不使用列表解析的情况下实现所需的功能,只使用基本的高阶函数,如 map、zipWith、filter 等(更准确地说,它们的等价物 mapV、zipWithV、filterV 等)
先决条件:
我正在使用 Haskell 嵌入式域特定语言(ForSyDe,模块ForSyDe.Shallow.Vector),仅限于一组硬件合成功能。为了尊重设计方法,我只能使用提供的函数(因此我不能使用列表推导等)
【问题讨论】:
-
列表推导式可以相当简单地转换为
map、filter、zipWith等。事实上,列表推导式只是一元函数的语法糖,而您的Vector类型可以成为一个单子,所以你可以只写列表理解版本并打开MonadComprehensions。
标签: haskell filter higher-order-functions