【问题标题】:Variant of `some-fn` for multiple arguments多个参数的“some-fn”变体
【发布时间】:2015-08-24 15:31:44
【问题描述】:

我发现自己需要一个类似于some-fn 的函数,但它结合了接受多个参数的谓词。

新函数应该采用一组谓词并返回一个函数f。函数f 应该返回由其组成谓词之一返回的第一个逻辑真值应用于f 的所有参数,否则为逻辑假。所以我应该能够做到这一点:

((some-fn* < >) 1 2)
=> truthy

((some-fn* < >) 1 1)
=> falsey

很容易实现:

(defn some-fn* [& fs]
  (fn [& args] (loop [fs fs]
                 (when (seq fs)
                   (or (apply (first fs) args)
                       (recur (rest fs)))))))

但是看起来这么简单的东西应该已经存在于 clojure.core 中了。可以?还是有更简单的方法来实现我的需要?

【问题讨论】:

    标签: clojure


    【解决方案1】:

    你可以使用some:

    (defn some-fn* [& ps]
      (fn [& args]
        (some #(apply % args) ps)))
    

    【讨论】:

      猜你喜欢
      • 2020-04-19
      • 2020-08-27
      • 2013-10-06
      • 2015-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-10
      相关资源
      最近更新 更多