Предикатные аргументы в SWI-Прологе - PullRequest
1 голос
/ 29 мая 2019

У меня есть программа на прологе, которая принимает пути к файлам в качестве аргументов. Примерами входных данных могут быть «a.txt», «b.txt» и т. Д. Итак, допустим, у меня есть этот код:

solve(file):-
   write(file).

Это слишком упрощено, и этот предикат может использовать файл во многих различных подпредикатах. Моя проблема заключается в следующем: я ожидаю, что с запросом solve('a.txt') a.txt будет передан в качестве аргумента (в этом случае он выведет .txt) для использования внутри этого предиката. Однако, кажется, что если я напишу что-нибудь кроме solve(file). он выдает false. Почему это происходит? Какой должен быть аргумент, чтобы я мог успешно передать «a.txt» или «b.txt» внутри предиката?

1 Ответ

0 голосов
/ 30 мая 2019

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

  • Это переменная: File
  • Это просто атом: file.

Сделай так:

solve(File) :-
    write(File).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...