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

2024-03-26

是否可以编写例如:

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

into:

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 http://ramdajs.com/docs/#either

const multipleOfThreeOrFive = R.either(multipleOfThree, multipleOfFive)

当然,在 Clojure 中这是some-fn https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将多个谓词函数组合为一个 的相关文章

随机推荐

  • UIPickerView重新加载数据

    我正在更改组件 特别是组件的数量和颜色 在我称为 pickerOne 的 UIPickerView 中 因此在进行更改后 我调用 pickerOne reloadData 它似乎工作得很好 但是 我收到了编译警告 warning UIPic
  • 为什么使用异常而不是 if...else

    例如 在 数组索引越界 异常的情况下 为什么我们不提前检查数组长度 if array length lt countNum logic else replace using exception 我的问题是 为什么选择使用异常 以及何时使用异
  • 什么时候是PersistentDict,什么时候是Folder?

    我什么时候应该使用持久字典 什么时候应该使用文件夹 它们在更新 内部结构 性能等方面有何区别 A PersistentMapping只是 python 的一个实现dict类型 通过标准库UserDict基类 针对 ZODB 的持久性语义进行
  • 在 viewDidUnload 和 dealloc 中都释放?

    一段时间以来我一直假设viewDidUnload当控制器被释放时总是被调用 这是一个正确的假设吗 我刚刚探索了一些奇怪的事情 并在我的控制器中设置了一个断点viewDidUnload这是dealloc 看起来dealloc被称为 但是vie
  • Android Studio更新:安装区域(studio.exe | uninstall.exe)中发现一些冲突

    当我启动 Android Studio 时 它会显示有关 1 1 版本新更新的弹出窗口 但是当我开始更新时 下载所有补丁文件后 重新启动时 它显示以下错误 我几乎在 Google 和 Stackoverflow 上到处搜索 已经有两个问题了
  • 我正在尝试在 boto3 周围输入注释,但模块“botocore.client”没有属性“EC2”

    我正在围绕 boto3 编写自己的包装器 以实现快速触发功能 我正在尝试输入注释内容boto3 session client ec2 返回 调试器说是
  • 给新手关于 N 层应用程序的建议

    好的 各位 这是给你们的另一篇 我开始涉足 n 层应用程序世界 我已经阅读了一些有关该主题的内容 一般建议是 n 层应用程序的目标是抽象层间功能 因此 基于此 在 n 层应用程序中 常规模型是 Data Access gt Business
  • 找到两个相似波形之间的时间偏移

    我必须比较两个时间与电压波形 由于这些波形源的特殊性 其中一个波形可以是另一个波形的时移版本 怎样才能知道是否有时移 如果是的话 多少钱 我正在 Python 中执行此操作 并希望使用 numpy scipy 库 scipy 提供了一个相关
  • 通用数组列表冒泡排序问题

    我知道有内置例程 但作为一名学习者 我想使用自己的设备进行排序 并且由于排序已经过时了 所以我决定尝试制作自己的例程generic如果我弄清楚它们在 Java 中的工作原理 我可以将其用于数字或字符串甚至日期的排序例程 这就是我所拥有的 将
  • 在 python 中实现 Bron–Kerbosch 算法

    对于一个大学项目 我正在尝试实施布隆 克博什算法 http en wikipedia org wiki Bron Kerbosch algorithm 即列出给定图中的所有最大团 我正在尝试实现第一个算法 不进行旋转 但是我的代码在测试后并
  • 如何更改 Netbeans 缓存目录?

    有什么方法可以更改 Netbeans 7 0 1 缓存目录吗 我只是不想更改几个应用程序的缓存 临时目录 其中之一是 NetBeans 对于 Netbeans 7 来说这似乎是不可能的 除非您重新定位整个用户目录或按照 MadWizard
  • 检查 AngularJs 指令中属性是否存在

    可以检查给定属性是否存在于指令中 理想情况下使用隔离范围 或者在最坏的情况下使用属性对象 指令看起来像这样
  • 信号执行期间的 sigprocmask

    我目前正在研究使用sigprocmask阻止某些信号 在这种情况下 SIGALRM and SIGCHLD 当关键代码段正在执行时 与这些信号关联的两个信号处理程序都将访问和修改中央数据结构 因此在主进程处理该数据结构时阻止它们访问它至关重
  • 将 youtube api 帮助程序集成到 iOS 时出现错误 258

    https developers google com youtube v3 guides ios youtube helper https developers google com youtube v3 guides ios youtu
  • 编写 SQL Server 权限脚本

    我想将我对存储过程和其他内容设置的所有权限从开发数据库复制到生产数据库 通过 SSMS GUI 工具手动完成这一切非常麻烦 更不用说容易出错 因此 我正在寻找一种方法 可以直接转储在一个数据库中设置的权限 并将这些相同的权限应用于单独的数据
  • 编辑所有视图和存储过程,查找和替换?

    有没有一种简单的方法可以在我的 SQL Server 数据库中的每个视图和存储过程中查找和替换字符串 我需要将 X United Kingdom 替换为 X UK 您需要查看sysobjects和syscomments 视图和存储过程的文本
  • 如何在 Google Visualization API 中进行多行注释?

    我正在尝试使用谷歌可视化 API 生成带注释的 LineChart 当我让它工作时 我希望能够在可能的情况下使注释具有换行符 不幸的是 Google 的 API 似乎忽略了任何换行信息并将所有内容显示在一行上 有人想出解决这个问题的办法吗
  • R htmlParse XML 中的编码问题

    我尝试抓取网站但无法处理此编码问题 putting together the url search str lt allintitle amphibian richness OR diversity url lt paste http sc
  • 如何在类库中定位EF生成的元文件?

    我已将 Entity Framework 4 模型移至类库 元文件构建到 bin Debug 我用来在类库中定位元文件的连接字符串是什么 我努力了
  • 将多个谓词函数组合为一个

    是否可以编写例如 defn multiple of three n zero mod n 3 defn multiple of five n zero mod n 5 into multiple of three or five 所以我可以