gpt4 book ai didi

Prolog:为什么我最终会得到带有匿名变量的列表

转载 作者:行者123 更新时间:2023-12-01 10:21:02 25 4
gpt4 key购买 nike

我只想写一个谓词,它需要两个列表:L1L2 ,我希望第三个元素返回第一个 N L2 的元素,其中 NL1 的长度.假设我可以假设 L2长于 L1 ,我不想使用内置的 length ,所以我尝试这样做:

getFirstPart([],_,_).
getFirstPart([H1|T1],[H2|T2],[H2|T3]) :- getFirstPart(T1,T2,T3).

当我尝试时,它给了我
?- getFirstPart([1,1,1],[1,2,3,4,5,6],L).
L = [1, 2, 3|_5081628].

谁能告诉我出了什么问题?谢谢!

最佳答案

让我们来看看推导树。我们从目标开始

getFirstPart([1,1,1],[1,2,3,4,5,6],L).

应用递归规则,我们获得了一个新目标
getFirstPart([1,1],[2,3,4,5,6],L2).

L = [1 | L2] .在下一个递归步骤中也会发生同样的情况:
getFirstPart([1],[3,4,5,6],L3).

L2 = [2 | L2] .再一次,我们得到
getFirstPart([],[4,5,6],L4).

L3 = [3 | L4] .然后是基本情况。当我们把替代品放在一起时,我们得到 L = [1,2,3 | L4]L4 没有限制.姓名 _5081628只是 L4的内部名称在您的 Prolog 解释器中。

关于Prolog:为什么我最终会得到带有匿名变量的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52598666/

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