gpt4 book ai didi

list - Prolog列表差异例程

转载 作者:行者123 更新时间:2023-12-04 05:27:38 25 4
gpt4 key购买 nike

我正在尝试在序言中实现列表差异例程。
由于某种原因,以下失败:

difference(Xs,Ys,D) :- difference(Xs,Ys,[],D).
difference([],_,A,D) :- D is A, !.
difference([X|Xs],Ys,A,D) :-
not(member(X,Ys)),
A1 is [X|A],
difference(Xs,Ys,A1,D).

尝试时:
?- difference([1,2],[],D).

我收到此错误:
ERROR: '.'/2: Type error: `[]' expected, found `1' ("x" must hold one character)
^ Exception: (10) _L161 is [2|1] ?

最佳答案

您的用法 A1 是 [X|A] 不正确。谓词 仅用于算术。
顺便说一句,SWI-Prolog 有内置的减法谓词:

1 ?- subtract([1,2,3,a,b],[2,a],R).
R = [1, 3, b].

2 ?- listing(subtract).
subtract([], _, []) :- !.
subtract([A|C], B, D) :-
memberchk(A, B), !,
subtract(C, B, D).
subtract([A|B], C, [A|D]) :-
subtract(B, C, D).

true.

这是你需要的吗?

关于list - Prolog列表差异例程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1523172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com