gpt4 book ai didi

clojure - 将多个谓词函数组合为一个

转载 作者:行者123 更新时间:2023-12-04 18:01:50 25 4
gpt4 key购买 nike

是否可以编写例如:

(defn- multiple-of-three? [n] (zero? (mod n 3))
(defn- multiple-of-five? [n] (zero? (mod n 5))

进入:

multiple-of-three-or-five?

所以我可以用它来过滤:

(defn sum-of-multiples [n]
(->> (range 1 n)
(filter multiple-of-three-or-five?)
(reduce +)))

我也不想这样定义它:

(defn- multiple-of-three-or-five? [n]
(or (multiple-of-three? n)
(multiple-of-five? n)))

例如,使用 Javascript 模块 Ramda 可以实现: http://ramdajs.com/docs/#either

const multipleOfThreeOrFive = R.either(multipleOfThree, multipleOfFive)

最佳答案

当然,在 Clojure 中这是 some-fn .

(def multiple-of-three-or-five?
(some-fn multiple-of-three? multiple-of-five?))
(multiple-of-three-or-five? 3)  ; => true
(multiple-of-three-or-five? 4) ; => false
(multiple-of-three-or-five? 5) ; => true

关于clojure - 将多个谓词函数组合为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45643579/

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