sml - 如何检查sml列表中的零
问题描述
我正在努力创建一个函数,该函数将返回给定列表中每个元素的乘积,不包括零。以下函数将正确返回列表的乘积,但不会排除零。
fun mult_nonzero(xs) =
case xs of [] => 0
| (x :: xs') => x * mult_nonzero(xs');
如何添加零检查?
解决方案
您可以使用 foldl(或 foldr)。如果您不熟悉 fold,那么值得自己熟悉一下。
fun mult_nonzero([]) = 0
| mult_nonzero(xs) = foldl (fn (a, b) => if a = 0 then b else a*b) 1 xs
推荐阅读
- bash - 高山脉 bash shell 脚本如何更改目录
- jenkins - Jenkins zip 实用程序步骤仅压缩根文件夹文件
- sql - 使用golang批量插入复制sql表
- python - 获取数据帧中每一行的最右边的非零值位置(非 lambda 方法)
- sparql - 如何在 SPARQL 中将 CONCAT 与来自 GROUP_CONCAT 的结果一起使用?
- batch-file - Guessing game with only 10 tries in batch
- android - 使用 Dagger 2 注入 ViewModel 并尝试理解为什么 @Binds 不起作用,而 @Provides 起作用
- javascript - 使用 xml:id 属性获取特定的 xml 节点
- javascript - 如何在表格单元格中插入弹出窗口?
- python - 静态变量可以在python中声明为私有吗?