我知道标题,但并不意味着如何获得' calculas1'单词并使用prolog将其列入此列表:
hasMark(calculas1 , 78 , 110).
答案 0 :(得分:0)
在Prolog中,您可以通过这种方式查询事实:
hasMark(Subject, X, Y).
在您的示例中,将产生:
Subject = calculus1
X = 78
Y = 110
收集它们的最简单方法是使用内置的findall
:
findall(Subject, hasMark(Subject, _, _), Subjects).
这将产生:
Subjects = [calculus1, ...]
...
是其他科目,如果你有的话。请注意,我使用_
作为两个参数。这意味着我不在乎这些价值观是什么。任何以_
开头的变量,包括该字符本身,都意味着“不关心”。
你也可以使用这样的谓词:
add_subject( MyList, [Subject | MyList] ) :-
hasMark(Subject, _, _).
所以你可以查询:
add_subject( [], List ).
得到:
List = [calculus1].
请注意,Prolog中使用带下划线和小写的命名约定比“camelCase”更常用。因此,最好将您的事实命名为has_mark
。