List 使用prolog将结果存储为列表
我希望结果存储在一个列表中List 使用prolog将结果存储为列表,list,prolog,List,Prolog,我希望结果存储在一个列表中 subject(english, 2). subject(math,2). subject(science,2). get_subject(subject, level) :- subject(subject,level) . 当我有这个问题时: ?-get_subject(X,2). 它给了我输出: X = english; X = math; X = science. 但我希望输出列表如下所示: [英语、数学、科学] 在prolog中可以这样做吗?是的,只
subject(english, 2).
subject(math,2).
subject(science,2).
get_subject(subject, level) :- subject(subject,level) .
当我有这个问题时:
?-get_subject(X,2).
它给了我输出:
X = english;
X = math;
X = science.
但我希望输出列表如下所示:
[英语、数学、科学]
在prolog中可以这样做吗?是的,只需使用
findall
:
?- findall(X, get_subject(X,2), Subjects).
此外,您的get_subject
定义中的变量应使用大写字母:
get_subject(Subject, Level) :- subject(Subject, Level).
你使用什么样的Prolog系统来实现你的小代码
当然,你的get\u subject
没有任何用处,你可以删除它的定义,直接使用subject
:
?- findall(X, subject(X,2), Subjects).
Subjects = [english, math, science].
是的,只需使用
findall
:
?- findall(X, get_subject(X,2), Subjects).
此外,您的get_subject
定义中的变量应使用大写字母:
get_subject(Subject, Level) :- subject(Subject, Level).
你使用什么样的Prolog系统来实现你的小代码
当然,你的get\u subject
没有任何用处,你可以删除它的定义,直接使用subject
:
?- findall(X, subject(X,2), Subjects).
Subjects = [english, math, science].
是的,只需使用
findall
:
?- findall(X, get_subject(X,2), Subjects).
此外,您的get_subject
定义中的变量应使用大写字母:
get_subject(Subject, Level) :- subject(Subject, Level).
你使用什么样的Prolog系统来实现你的小代码
当然,你的get\u subject
没有任何用处,你可以删除它的定义,直接使用subject
:
?- findall(X, subject(X,2), Subjects).
Subjects = [english, math, science].
是的,只需使用
findall
:
?- findall(X, get_subject(X,2), Subjects).
此外,您的get_subject
定义中的变量应使用大写字母:
get_subject(Subject, Level) :- subject(Subject, Level).
你使用什么样的Prolog系统来实现你的小代码
当然,你的get\u subject
没有任何用处,你可以删除它的定义,直接使用subject
:
?- findall(X, subject(X,2), Subjects).
Subjects = [english, math, science].