prolog - 检查列表的所有成员
问题描述
假设我的序言中有以下列表:
L=[10,11,2,3,5]
有没有一种方法可以检查列表的所有成员L
以确保每个成员都小于5
?
解决方案
我们可以利用maplist/2
这里。这是一个谓词:
maplist(:Goal, ?List)
True
ifGoal
可以成功应用于List
. 对参数进行重新排序以获得性能以及使谓词在正常情况下具有确定性。
所以我们可以在这里检查元素:
all_less_five(L) :-
maplist(>(5), L).
在这里,对于每个元素x ∈ L,它将因此调用,或以内联形式。因此,如果所有这些元素都小于五个,则谓词将成功。>(5, x)
5 > x
all_less_five/1
例如:
?- all_less_five([10,11,2,3,5]).
false.
?- all_less_five([2,3,5]).
false.
?- all_less_five([2,3]).
true.
推荐阅读
- cypress - 断言输入元素包含赛普拉斯中的特定值
- sql - 将以下“RIGHT OUTER JOIN”查询修改或提高效率进入内连接?
- c# - 保存布局到流。错误:找不到部分路径“c:\TreeListLayout\”
- java - 如何动态更改bottomAppBar菜单图标
- xaml - 如何在 xamarin 表单中自动大写键盘/输入
- java - 如何保持硒步保持等待1小时?
- android - 如何限制对cordova android内部存储中的应用程序文件的访问?
- laravel - 无法打开流:没有这样的文件或目录(Laravel)
- reactjs - 使用功能组件时使用大括号与圆括号制作组件
- javascript - 使用在单个表单中发布不同的数据