Пролог: чтение ввода с пробелами вызывает ошибку - PullRequest
0 голосов
/ 04 ноября 2010

это моя программа

tran('father','otosan').
tran('father','chichiwe').
tran('mother','okasan').
tran('mother','hahawe').
tran('hi','ohayo').
tran('good night','oyasemi').
tran('good bye','sayonara').
tran('do your best','gambaru').
tran('please','onegai').
tran('sorry','gomen').
tran('thank you','aregatto').
tran('cute','kawaii').
eng:- nl,write('enter a word in english: '),read(X),jap(X).
jap(X):- tran(X,Y),write('the word in japanese is '),write(Y),nl,fail.
jap(Z).
:-eng.

Я получил ошибку в словах с пробелами

как я могу решить эту проблему?

1 Ответ

2 голосов
/ 04 ноября 2010

Похоже, что при вводе слов с пробелами их нужно заключать в одинарные кавычки:

?- ['trans.pl'].
% trans.pl compiled 0.00 sec, 5,432 bytes
true.

?- eng.

enter a word in english: hi.
the word in japanese is ohayo
false.

?- eng.

enter a word in english: 'good bye'.
the word in japanese is sayonara
false.

Причина, по которой это происходит, заключается в том, что когда вы вводите hi, Prolog объединяет его в jap(hi)., что приводит к ohayo. Когда вы вводите good bye, Prolog унифицирует его до jap(good bye), что приведет к ошибке (ожидается оператор). Вот почему вам нужно процитировать ваш ввод как 'good bye'. Пролог затем объединит его в jap('good bye'), что даст вам то, что вы хотите.

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