Prolog 如何检查指定名称的所有谓词是否具有指定数量的参数?

Prolog 如何检查指定名称的所有谓词是否具有指定数量的参数?,prolog,Prolog,假设我有许多用于保存数据的谓词。我已经手工输入了所有这些数据。现在我需要确保它们都有相同数量的参数 以下面的示例为例,我需要确保data始终有6个参数: % data(Id, Name, Age, Street, City, Phone). data(1, 'John', 12, "1 New Street", "Central City", "873289712"). data(2, 'Ali', 11, "122 Sesame Street", "Central City", "823283

假设我有许多用于保存数据的谓词。我已经手工输入了所有这些数据。现在我需要确保它们都有相同数量的参数

以下面的示例为例,我需要确保
data
始终有6个参数:

% data(Id, Name, Age, Street, City, Phone).
data(1, 'John', 12, "1 New Street", "Central City", "873289712").
data(2, 'Ali', 11, "122 Sesame Street", "Central City", "823283821").
% ...
如何编写一个谓词来检查所有
数据
谓词的参数数是否正确?如果某个条目的参数数量不正确,我想知道哪个条目不正确

例如:

CheckArguments(data, 6).

如果存在谓词
data(2,'Farah'),则应给出
false
,因为此条目在所需的6个参数中只有2个参数。此外,谓词应该有某种方式告诉我有问题的谓词是
数据(2,'Farah')。
使用ISO Prolog标准谓词
当前谓词/1
。例如,加载数据子句后:

| ?- current_predicate(data/Arity).
回溯到所有解决方案,以获得名称为
data
的用户定义谓词的所有算术