gpt4 book ai didi

Haskell 按列表索引过滤

转载 作者:行者123 更新时间:2023-12-05 05:14:19 25 4
gpt4 key购买 nike

我有函数:

isEven n = (mod n 2) == 0

我只想要偶数,我得到:

filter isEven [1, 2, 3, 4 ,5 ,6] -- -> 2, 4, 6

到目前为止一切顺利。

我的问题是:我可以在函数中按列表索引进行过滤吗? (你可以想象 js 过滤器,其中第二个参数是索引)。

如果没有,有什么理由不包括在内,我怎样才能用好的 haskell 方式做到这一点?

最佳答案

如果你想要一个同时对值和索引进行过滤的函数,你可以这样自己写:

filterIndexed :: (a -> Int -> Bool) -> [a] -> [a]
filterIndexed p xs = [x|(x,i) <- zip xs [0..], p x i]

它使用列表推导式,这对这类事情(过滤器和项目)非常有用。这不在标准库中的原因是因为它是一个相对罕见的操作,并且直接在您的代码中进行列表理解相当容易。

关于Haskell 按列表索引过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52695465/

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