我对conc
有了一个定义
conc([], L2, L2).
conc([X1|R1], L2, [X1|RN]) :-
conc(R1, L2, RN).
我不明白为什么conc([X | green], Y, [red, green, blue]).
返回false
而不是
X = [red],
Y = [blue]
这里的推理过程是什么?
发布于 2018-06-06 02:07:45
免责声明:我不知道Prolog。这个答案的其余部分是一个经过计算的猜测。
您提出的X = [red]
解决方案没有任何意义,因为这将使X
成为一个单元素列表。让我们假设
X = red
而不是。
那将会给我们
conc([red | green], [blue], [red, green, blue]).
使用conc
的第二个方程,它变成
conc(R1, L2, RN).
% with:
% X1 = red
% R1 = green
% L2 = [blue]
% [X1|RN] = [red, green, blue]
% i.e. X1 = red
% RN = [green, blue]
也就是说。
conc(green, [blue], [green, blue]).
现在我们被卡住了,因为您的conc
规则都不适用于green
。
问题出在[X | green]
上,因为green
不是列表的尾部。
你是指[X, green]
吗?
https://stackoverflow.com/questions/50706159
复制相似问题