gpt4 book ai didi

prolog - Z = [_G305] 这样的结果在序言中意味着什么?

转载 作者:行者123 更新时间:2023-12-01 11:58:09 25 4
gpt4 key购买 nike

我有这些定义:

memberx(X, [X|_]).
memberx(X, [_|T]) :- memberx(X, T).

intersectionx([], _, []).
intersectionx([H|T], Y, [_|Z]) :- memberx(H, Y), !, intersectionx(T, Y, Z).
intersectionx([_|T], Y, Z) :- intersectionx(T, Y, Z).

我得到以下结果:

?- intersectionx([1], [1], Z).
Z = [_G305].

为什么它不会导致 Z = [1]??

最佳答案

Z = [_G305].

表示这个答案对所有术语都是正确的。也就是说,它不是仅适用于 Z = [1] - 如您所料,但它也适用于 Z = [2]。

显然,这不是您所期望的。

那么错误在哪里呢?检测它的一个简单方法是注意匿名变量用 _ 表示。

考虑:

intersectionx([H|T], Y, [_|Z]) :- memberx(H, Y), !, intersectionx(T, Y, Z).
^^^

你所写的意思是列表的交集以H 和另一个列表将是(提供右侧的目标都是真的)以任何东西开头的列表...用那个 H 替换任何东西!

关于prolog - Z = [_G305] 这样的结果在序言中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4102535/

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