Предположим, у меня много предикатов, используемых для хранения данных. Я вручную ввел все эти данные вручную. Теперь мне нужно убедиться, что все они имеют одинаковое количество аргументов.
Возьмите пример ниже, где я должен убедиться, что 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).
Должен дать false
, если существует предикат data(2, 'Farah').
, поскольку эта запись имеет только 2 аргумента из требуемых 6. Кроме того, предикат должен каким-то образом сказать мне, что предикат-нарушитель data(2, 'Farah').
.