对Prolog中的知识库进行排序



这是我第一天使用Prolog,我需要一些帮助。我有一个学生的知识库student(Id,fName,lName,grade)我有一些想法,但我无法实现主题,因为我对prolog编程范式和语法一点也不熟悉。请给我推荐一个代码。

student(1, sleve, mcdichael,4).
student(2, darryl, archideld,2).
student(3, mario, mcrlwain, 1).
student(4, bobson, dugnutt, 3).
student(5, dean, wesrey, 6).
student(6, mike, truk, 5).
student(7, dwigt, rortugal, 7).
sortedStudents(SortedStudents) :-
findall(Grade-First-Last,
student(_, First, Last, Grade),
StudentData),
sort(1, @=<, StudentData, SortedStudents).

使用findall/3获取所有学生记录,并将其转换为grade-first - name-lastname的复合词,并使用sort/4(可能是特定于SWI Prolog的)按词项1 (grade)排序:

?- sortedStudents(S).
S = [
1-mario-mcrlwain,
2-darryl-archideld,
3-bobson-dugnutt,
4-sleve-mcdichael,
5-mike-truk,
6-dean-wesrey,
7-dwigt-rortugal
]