Prolog中是否可以接受变量arity的谓词?

Mar*_* A. 3 logic prolog

在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)

我真的不知道这是否可能..

Tha*_*dis 5

您可以定义具有相同名称的不同arities的谓词,但它们将是不同的谓词.

foo(1).
foo(2,1).

?-foo(2).
false
Run Code Online (Sandbox Code Playgroud)

我的建议是改变编码; 而不是一些初始列表,有一个初始列表列表.
另一种解决方案是为所有可能的参数编写谓词(或动态生成它们).