List 序言:两个或更多

List 序言:两个或更多,list,prolog,List,Prolog,prolog中是否有类似于“两个或多个”(或另一个选项)的东西来缩短以下内容 rule(foo, [bar,bar]). rule(foo, [bar,bar,bar]). rule(foo, [bar,bar,bar,bar]). rule(foo, [bar,bar,bar,bar,bar]). 您可以这样理解:如果有一系列的n条,那么可以指定标记foo rule(foo, Out) :- random(2,6,N), length(Out,N), map

prolog中是否有类似于“两个或多个”(或另一个选项)的东西来缩短以下内容

rule(foo,  [bar,bar]). 
rule(foo,  [bar,bar,bar]).
rule(foo,  [bar,bar,bar,bar]).
rule(foo,  [bar,bar,bar,bar,bar]).
您可以这样理解:如果有一系列的n条,那么可以指定标记foo

rule(foo, Out) :-
    random(2,6,N),
    length(Out,N),
    maplist(=(bar),Out).
这是一种可能性

rule(foo, Out) :-
    random(2,6,N),
    length(Out,N),
    maplist(=(bar),Out).

between/3
可能就是您想要的:

rule(foo, L) :-
    between(2, 5, N),
    length(L, N),
    maplist(=(bar), L).

between/3
可能就是您想要的:

rule(foo, L) :-
    between(2, 5, N),
    length(L, N),
    maplist(=(bar), L).

这看起来像是“在2到5个
bar
s之间”。你真的是说“一个或多个
bar
s”?是的,对不起,我的意思是2到5之间。然后你应该编辑你问题的标题。总之,试着写问题,以便清楚你的问题是什么。这看起来像“2到5个
bar
s”。你真的是说“一个或多个
bar
s”?是的,对不起,我的意思是2到5之间。然后你应该编辑你问题的标题。总之,试着写问题,以便清楚你的问题是什么。要获得OP示例中的行为,你可能想要
between/3
而不是
random/3
。也许。OP说的是“我的意思是介于2和5之间”。要得到OP示例中的行为,你可能想要
between/3
而不是
random/3
。也许。OP说的是“我的意思是介于2和5之间”。是的!谢谢,这就是我要找的。@你不应该彻底改变你的问题。它使给出的答案和评论无效。请将您的问题改回原处,然后打开一个新问题。但是,如果你想一想,你也应该能够运用我展示的技术来解决这个问题。是的!谢谢,这就是我要找的。@你不应该彻底改变你的问题。它使给出的答案和评论无效。请将您的问题改回原处,然后打开一个新问题。但是,如果你想一想,你也应该能够应用我展示的技术来解决这个问题。