Есть ли способ определить тип элемента в списке в Prolog? Я знаю, что переменные не указаны явно в Prolog, но мне нужно проверить, является ли элемент числом, конкретным символом и т.д. Как это можно сделать?
Проверка типа пролога
Ответ 1
Prolog определяет группу встроенных предикатов для целей тестирования типов: var/1
, atom/1
, integer/1
, float/1
, atomic/1
, compound/1
, nonvar/1
, number/1
, all из них с вполне понятным смыслом, если вы знаете типы данных языка. Для определенных символов вы можете использовать унификацию с этим символом после проверки того, что элемент не является свободной переменной (иначе объединение всегда будет успешным).
Ответ 2
Вы можете попробовать этот код:
isList([_|_]).
isList([]).
Надеюсь, что это поможет.
Ответ 3
Чтобы проверить, привязана ли переменная к списку, вы можете использовать is_list/1
.
Ответ 4
чтобы проверить список, который вы могли бы попробовать:
listing(is_list/1, list_functor/1).
is_list(X) :-
functor(X, F, _),
list_functor(F).
list_functor('.').
list_functor('[]').
Ответ 5
число/1