首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PROLOG:推理过程,为什么返回false

PROLOG:推理过程,为什么返回false
EN

Stack Overflow用户
提问于 2018-06-06 01:51:51
回答 1查看 41关注 0票数 0

我对conc有了一个定义

代码语言:javascript
运行
复制
conc([], L2, L2).
conc([X1|R1], L2, [X1|RN]) :-
   conc(R1, L2, RN).

我不明白为什么conc([X | green], Y, [red, green, blue]).返回false而不是

代码语言:javascript
运行
复制
X = [red],
Y = [blue]

这里的推理过程是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-06 02:07:45

免责声明:我不知道Prolog。这个答案的其余部分是一个经过计算的猜测。

您提出的X = [red]解决方案没有任何意义,因为这将使X成为一个单元素列表。让我们假设

代码语言:javascript
运行
复制
X = red

而不是。

那将会给我们

代码语言:javascript
运行
复制
conc([red | green], [blue], [red, green, blue]).

使用conc的第二个方程,它变成

代码语言:javascript
运行
复制
conc(R1, L2, RN).
% with:
% X1 = red
% R1 = green
% L2 = [blue]
% [X1|RN] = [red, green, blue]
% i.e. X1 = red
%      RN = [green, blue]

也就是说。

代码语言:javascript
运行
复制
conc(green, [blue], [green, blue]).

现在我们被卡住了,因为您的conc规则都不适用于green

问题出在[X | green]上,因为green不是列表的尾部。

你是指[X, green]吗?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50706159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档