繁体   English   中英

在Prolog中指定列表长度作为目标

[英]Specify list length as a goal in Prolog

我想使用内置的谓词include / 3来获取长度大于N的列表列表中的所有列表。

我试过这个:

% S is the size I'm checking for
include((length(_, N), N = S), List1, List2).

但它不起作用。 我不确定如何正确指定我的长度目标。 我特别不确定'_'代替了什么。

更简单的方法:使用适当的参数提供谓词(比方说,一个模式适配器):

length_list(Len,List) :- length(List,Len).

接着

...,
include(length_list(S), List1, List2).

根据您使用的系统, yalllambda库都是不错的选择,值得研究。

使用yall:

?- L1=[[a],[a,b]],S=2,include({S}/[L]>>length(L,S),L1,R).
L1 = [[a], [a, b]],
S = 2,
R = [[a, b]].

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM