gpt4 book ai didi

haskell - Data.Set 的 `any` 函数

转载 作者:行者123 更新时间:2023-12-03 21:57:41 25 4
gpt4 key购买 nike

我需要检查集合中的任何元素是否满足谓词。到目前为止我一直在使用列表,所以我只是使用了

any myPredicate sx

但在我的情况下使用集合在语义上更正确(并且可能更有效)。但是集合没有 any,我最终得到了很多这样的行(Data.Set as S):

any myPredicate $ S.toList mySet

有没有办法不让我的代码在所有这些转换中乱扔垃圾,比如使用 monoid 之类的......?

(我的意思是,除了定义anyS p s = any p $ S.toList s之外,肯定还有办法,不然Data.Set里怎么没有。 ..?)

最佳答案

怎么样

import qualified Data.Set as Set
import Data.Set (Set)

orS :: Set Bool -> Bool
orS = Set.foldr (||) False

anyS :: (a -> Bool) -> Set a -> Bool
anyS p = orS . Set.map p

或者,更简单地说,因为 SetFoldable

import qualified Data.Foldable as F

anyS :: (a -> Bool) -> Set a -> Bool
anyS = F.any

关于haskell - Data.Set 的 `any` 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19222441/

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