Ответ в теме: Из строки удалить цифры

      Комментарии к записи Ответ в теме: Из строки удалить цифры отключены
#1768

Вам нужно 2 предиката. Предикат обработки списка должен для каждого элемента вызывать предикат для обработки слова и результат поместить в новый список.

list_handler([], []):-!.
list_handler([Head|Tail], [HeadResult, TailResult]):-
  word_handler(Head, HeadResult), list_handler(Tail, TailResult).

Второй предикат обрабатывает слово и удаляет из него цифры. Я пишу на SWI Prolog и строки там обрабатываются немного иначе.
word_handler(InputString, ResultString):-
  NOT(frontchar(InputString,Char,StringTail)), !,
  ResultString = "".
word_handler(InputString, ResultString):-
  frontchar(InputString,Char,StringTail), is_digit(Char), !,
  word_handler(InputsString, ResultString).
word_handler(InputString, ResultString):-
  frontchar(InputString,Char,StringTail),
  word_handler(InputsString, TResultString),
  frontchar(ResultString,Char, TResultString).

Это не лучший код, т.к. frontchar вызывается трижды для каждой буквы. Возможно стоит написать вспомогательный предикат, принимающий символ и часть слова. Такой предикат должен приделать символ к слову, если символ не является цифрой.

Тут используется is_digit для проверки того, является ли символ цифрой. Если в Visual Prolog нет такого встроенного предиката — используйте num (он определен в вашем коде).

Предикат frontchar принимает на вход строку, символ и результирующую строку. И работает следующим образом:
1) если задана только исходная строка и она пуста — правило завершается неудачей;
2) если задана только исходная строка и она не пуста — то функция вернет первый символ и остаток строки (именно таким образом у нас перебираются символы строки);
3) если задана результирующая строка и символ — то формируется исходная строка как Символ + Результирующая_строка. Это используется при формировании строки из символов, не являющихся цифрами.

Код не проверял, т.к. Linux у меня, не работает тут Visual Prolog, но в SWI Prolog нет никаких frontchar и прочего…