2
我正在用prolog分配一個問題。帶複合謂詞的集合
所以,我有以下事實數據庫序言:
student(name(doe, [john]), 33332, ['CSI1120']).
student(name(doe, [jane]), 33336, ['CSI1120']).
evaluation('CSI1120', homework(1), ['Prolog', database ], 5).
mark('CSI1120', 33332, homework(1), 3.5).
mark('CSI1120', 33336, homework(1), 4.0).
我在這裏的目標是創建一個謂詞listAllMarks/3
如
?- returnAllMarks('CSI1120',homework(1),L).
返回:
L= [(33332, 3.5), (33336, 4.0)].
在爲了解決這個問題,我正在考慮使用序言setof/3
,所以我帶着以下謂詞來。
returnAllMarks(C,H,L):- setof(L,mark(C,_,H,X),[L|X]).
這似乎不起作用,謂詞總是返回false。我懷疑這可能是由於我使用setof反對複合謂詞的事實,但我可能是錯的(我還處於學習序言的早期階段)。
你們有沒有想法?我看着從各個角度這個問題,我在這裏停留
謝謝