Prolog:两个或更多

时间:2016-02-19 15:54:56

标签: 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

2 个答案:

答案 0 :(得分:2)

between/3可能就是您之后的事情:

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

答案 1 :(得分:0)

这是一种可能性

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