繁体   English   中英

使用prolog将结果存储为列表

[英]Store result as a list using 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.

但是我希望输出是这样的列表:[英语,数学,科学]是否可以在序言中做到这一点?

是的,只需使用findall

?- findall(X, get_subject(X,2), Subjects).

同样,您的get_subject定义应将大写字母的单词用作变量:

get_subject(Subject, Level) :- subject(Subject, Level).

您使用什么Prolog系统使小写代码起作用?

当然,您的get_subject并不会做任何有用的事情,您可以删除其定义并直接使用subject

?- findall(X, subject(X,2), Subjects).
Subjects = [english, math, science].

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM