我需要设计一个谓词,它以交互方式接受输入,以创建一个带有空类列表的新学生记录。另外,我需要通过检查studentID不在数据库中来检查学生是否还在系统中。
这是学生数据库
% name, studentId, course list
student(name(jane, [ann]), 5555, ['CS3230'] ).
输出应该是这样的
?- addStudent.
Student last name: doe.
Student first name: [jim,k].
Student Id: 23123.
true.
这是我的代码
addStudent :- write('Student last name: '),
read(L),
write('Student first name: '),
read(F),
write('Student ID: '),
read(ID),
assertz(student(name([L,F])),ID,_),
not(member(ID,student)).
我收到错误:添加/ 3:未定义的程序:读取输入后断言(询问学生ID后) 我如何解决这个问题来处理我的代码?
答案 0 :(得分:0)
在谓词addStudent中,调用您定义的中间谓词:
addStudent :-
[...]
read(ID),
insertStd(L,F,ID).
%Case where student exist, will return true and not get to the second predicate%
insertStd(L,F,ID) :- student(name(L,F),ID,_).
%Case where student do not exsist, will insert it to the fact database%
insertStd(L,F,ID) :- assertz(student(L,F),ID,[])).
祝其余的作业好运,这个怪异的作业中的问题变得越来越轻松!
编程范式的受害者