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

Prolog事实未完整解析:查询parent/2仅返回单一结果求助

问题分析与解决

你的Prolog代码不存在逻辑或语法错误,只返回第一个结果是因为SWI-Prolog的交互查询机制:系统找到第一个匹配的解后会暂停,需要你主动触发获取下一个解。

触发多结果的操作

执行查询 ?- parent(X, isaac). 得到 X = abraham . 后:

  • 在SWI-Prolog交互界面中按下分号(;)或空格键,系统会继续搜索下一个匹配项,此时会输出 X = sarah .
  • 若没有更多解,系统会返回 false 表示搜索结束

代码正确性验证

你可以单独测试子规则确认功能正常:

  • 执行 ?- mother(X, isaac).,会直接返回 X = sarah .,说明mother事实与规则有效
  • 执行 ?- father(X, isaac).,会返回 X = abraham .,说明father事实与规则有效

parent规则通过两个子句分别调用father和mother,逻辑上必然生成两个解,只是需要你在交互时主动请求后续结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 09:05:58