在Prolog中有可能有一个"变量arity谓词"吗?
我的意思是这样的:
my_predicate( [a,b,c], [a,c], [a], [a,b,c,d], N, RESULT)
Run Code Online (Sandbox Code Playgroud)
一开始未知的初始列表数量?
使用univ
运算符(= ..),可以将其与术语列表统一,并像其他列表一样遍历它.但是如何写出目标呢?
my_predicate(??) =.. [??]
Run Code Online (Sandbox Code Playgroud)
我真的不知道这是否可能..
您可以定义具有相同名称的不同arities的谓词,但它们将是不同的谓词.
foo(1).
foo(2,1).
?-foo(2).
false
Run Code Online (Sandbox Code Playgroud)
我的建议是改变编码; 而不是一些初始列表,有一个初始列表列表.
另一种解决方案是为所有可能的参数编写谓词(或动态生成它们).