You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Prolog中逐行打印存储在数据库中的列表内容?

问题原因
  • 你定义的valueslist是存储列表的事实,不能直接把valueslist作为参数传给printlist:printlist的匹配规则只接受列表结构,传入原子valueslist无法匹配任何一条printlist的子句,因此直接返回false,不会执行后续打印逻辑。
修复方案

只需要在go谓词中先查询valueslist事实,将其存储的列表绑定到变量后再传入printlist即可,修改后的完整代码如下:

valueslist(['papua new guinea',botswana,'netherlands antilles',sweden,cameroon]).

printlist([]).
printlist([X|List]) :-
  write(X),nl,
  printlist(List).

go :-
  write('Here is an example list of countries: '), nl,
  % 先取出valueslist存储的列表,绑定到变量L
  valueslist(L),
  printlist(L).
运行效果

在SWI-Prolog中加载代码后执行go.,即可输出预期结果:

papua new guinea
botswana
netherlands antilles
sweden
cameroon

内容的提问来源于stack exchange,提问作者user4371612

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 22:24:03