【发布时间】:2016-02-26 13:05:50
【问题描述】:
所以我有 Prolog 代码在给定位置插入一个元素:
ins(Val, [H|List], Pos, [H|Res]):-
Pos > 1,
!,
Pos1 is Pos - 1,
ins(Val, List, Pos1, Res).
ins(Val, List, 1, [Val|List]).
这给出了一个输出
28 ?- ins(B, [A,C,D], 4, Z).
Z = [A, C, D, B].
效果很好。
现在我想在列表的开头重用这段代码。
addFirst(Val, [H|List], [H|Res]):-
ins(Val, [H|List], 1, [H|Res]).
这给了我一个输出
41 ?- addFirst(A, [B,C,D], Z).
A = B,
Z = [B, B, C, D].
有人可以帮我解释一下为什么会这样吗?我是 Prolog 的新手。
【问题讨论】:
-
如果您确保您的大小写正确,将会很有帮助。变量以大写字母开头,原子以小写字母开头。你所拥有的一切都是大写的。难怪事情不起作用。你能修复你的代码吗?
-
@Enigmativity 案例是错误的一部分;在这方面修复代码将向 OP 揭示错误的性质,但会改变问题的含义。