Ответ в теме: Ввод списка на prolog

      Комментарии к записи Ответ в теме: Ввод списка на prolog отключены
#2436

В Turbo Prolog и Visual Prolog 5.2 ввести список целиком нельзя — придется считывать его элементы по одному и каждый раз спрашивать следует ли продолжать ввод.

domains
list_d = integer*
predicates
readlist(list_d)
clauses	
readlist([Head|Tail]):-
write("enter element value or empty string to finish: "), readint(Head), !,
readlist(Tail).
readlist([]).
goal
readlist(List).

В данном случае первое правило функции readlist выводит пользователю информационное сообщение и пытается считать с клавиатуры целое число функцией readint. При вводе целого числа выполняется рекурсивный вызов для ввода хвоста списка. Если же будет введено что угодно кроме целого числа (в том числе пустая строка), выполнение будет передано второму правилу, возвращающему пустой список в любом случае.