gpt4 book ai didi

Haskell:基于索引向量的过滤,仅使用基本的高阶函数

转载 作者:行者123 更新时间:2023-12-04 23:21:32 27 4
gpt4 key购买 nike

问题

我有一个向量 一个 大小为 N 的样本数据和另一个向量 b 大小为 M (N>M) 的持有指数。我想获得一个向量 c 大小为 N,包含来自 的过滤元素一个 基于 中的索引b .

问题

是否可以在不使用列表理解的情况下实现所需的功能,只使用基本的高阶函数,如 map、zipWith、filter 等(更准确地说,它们的等价物 mapV、zipWithV、filterV 等)

先决条件:

我正在使用 Haskell 嵌入式域特定语言( ForSyDe ,模块 ForSyDe.Shallow.Vector ),仅限于一组可硬件合成的功能。为了尊重设计方法,我只能使用提供的功能(因此我不能使用列表推导等)

最佳答案

免责声明:

我没有测试此代码的功能,因为 cabal 开始四处窃听。它适用于列表,当我将每个向量转换为列表时,它 应该 尽管可能会出现问题,但工作正常。

试试这个:

indexFilter :: (Num b, Eq b, Enum b) => Vector a -> Vector b -> Vector a
indexFilter vector indices = vector (map fst (filter (\x -> (snd x) `elem` (fromVector indices)) vectorMap))
where
vectorMap = zip (fromVector vector) [0..]
indexFilter采用 (<element>, <index>) 形式的元组列表然后返回索引在向量 b 中的所有元素的向量。 vectorMap只是 a 的元素及其在向量中的索引的压缩。

关于Haskell:基于索引向量的过滤,仅使用基本的高阶函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24928675/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com