Ответ в теме: Составление слов-мутантов на Visual Prolog

      Комментарии к записи Ответ в теме: Составление слов-мутантов на Visual Prolog отключены
#2776

Работа предиката str_list подробно описана тут: Преобразование строки в список символов. Turbo Prolog, но там предикат называется string_to_list (это более правильно, т.к. в международном стандарте ISO на Prolog есть такая функция, но она отсутствует в Turbo и Visual Prolog).

Предикаты print_list и write_list в вашем коде делают одно и тоже — выводят список, но делают это в чуть-чуть разном формате. В обоих случаях вывод заканчивается когда список оказывается пустым, оператор отсечения в print_list при этом не влияет на результат работы — используется зеленое отсечение.

Что касается функции append — то она может применяться не только для конкатенации (объединения) списков, но и для вычисления их разности, и даже — для генерации всех вариантов построения списка из двух частей. Более подробно это описано в статье, посвященной обработке списков в Prolog (если Вам не понятен код в этой задаче — рекомендую прочитать ее).