我必须在Prolog中编写一个简单的专家系统来安排课程安排。在此代码部分中,我希望该用户向系统添加一个讲师。为此,读取两个输入值,但出现此错误。
addinstructor() :-
read(id),
read(courseid),
assert(instructor(id, courseid)),
write("added").
查询:
?- addinstructor().
5
cse102.
然后,我得到了操作员预期的错误。 如何解决此问题以使我的代码正常工作?
答案 0 :(得分:2)
谓词read/1读取Prolog术语而不是原始数据。 Prolog条款以句号结尾。
因此,如果您输入5
而不是输入5.
,则不会收到错误消息。
例如,不要使用Term reading and writing中的谓词。 read/1
,您应使用Primitive character I/O中的谓词来读取字符或使用Predicates that operate on strings来读取字符串,例如read_string/3
要回答有关如何实现此问题的下一个问题,请参阅Prolog - Write out facts and reading a users input,然后再访问this。