是否有类似'两个或更多'(或其他选项)的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
答案 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).