【问题标题】:How to check that all predicates of a specified name have the specified number of arguments?如何检查指定名称的所有谓词是否具有指定数量的参数?
【发布时间】:2020-02-21 14:39:55
【问题描述】:

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

以下面的例子为例,我需要确保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").
% ...

如何编写一个谓词来检查所有data 谓词是否具有正确数量的参数?如果特定条目的参数数量不正确,我想知道哪个条目不正确。

例如:

CheckArguments(data, 6).

如果存在谓词data(2, 'Farah').,则应该给出false,因为这个条目在所需的6个参数中只有2个。此外,谓词应该有某种方式告诉我有问题的谓词是data(2, 'Farah'). .

【问题讨论】:

    标签: prolog


    【解决方案1】:

    使用 ISO Prolog 标准谓词 current_predicate/1。例如,加载数据子句后:

    | ?- current_predicate(data/Arity).
    

    回溯到所有解决方案,以获取名称为 data 的用户定义谓词的所有参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-20
      • 1970-01-01
      • 1970-01-01
      • 2017-06-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多