Ответ в теме: Ввод списка на 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. При вводе целого числа выполняется рекурсивный вызов для ввода хвоста списка. Если же будет введено что угодно кроме целого числа (в том числе пустая строка), выполнение будет передано второму правилу, возвращающему пустой список в любом случае.