所以我遇到的这个问题困扰着我很多。
我们有student(sID,LR,[courses]).
其中sID
是学生ID,LR
用于确定他是左撇子还是右撇子,而[courses]
是一系列课程。
接下来,我们有谓词{{1}},其中listStudents(C,L)
代表一个课程,C
代表列表。谓词要返回L
课程中的学生名单。
示例:
C
现在,我已经尝试了几种方法:
student(23,1,[math101,phy203]).
student(24,0,[math101,phy203,art]).
student(25,1,[phy203,art]).
?- listStudents(math101,L)
L=[23,24]
后来我意识到这是错误的,因为它返回了我
listStudents(C,L):- student(C,_,Y), member(C,Y)
此后,我正在阅读有关findall()的信息,并且做到了
L=23
L=24
这会带来意想不到的回报
listStudents(C,L):- findall(S, study(C,S), L).
study(C,S):- estudiante(S,_,Y), member(C,Y).