Добавить данные в пролог с текстом - PullRequest
0 голосов
/ 26 ноября 2011
?-dynamic(setup/5).
setup :-
    seeing(S),
    see('people.txt'),
    read_data,
    write('data read'),
    nl,
    seen,
    see(S).
read_data :-
    read(A),
    process(A).
process(A) :- A == end_of_file.
process(A) :-
    A \== end_of_file,
    write('1'),
    read(B),
    read(C),
    read(D),
    read(E),
    assertz(person(A,B,C,D,E)),
    read_data.

и текст

john.will.30.london.doctor.
martha.will.33.portsea.doctor.
henry.smith.26.manchester.doctor.

результат выходит

?- setup.

* Syntax Error

* Syntax Error

* Syntax Error

* Syntax Error

* Syntax Error
data read
yes

Что происходит?Что я сделал не так?

1 Ответ

2 голосов
/ 26 ноября 2011

Вы читаете с read / 1, который ожидает допустимый текст Пролога в качестве ввода.Однако ваши данные

john.will.30.london.doctor.

недействительны.Напишите что-то вроде

person(john,will,30,london,doctor).

.Чаще всего люди не читают такие данные вручную.Вместо этого они загружают файл с помощью ['datafile.pl'] или других команд.

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