gpt4 book ai didi

prolog - 要列出的没有深度的列表列表

转载 作者:行者123 更新时间:2023-12-04 06:38:20 26 4
gpt4 key购买 nike

我试图创建一个函数,该函数接受一个列表列表,并返回一个包含原始列表元素但没有深度的新列表。
例如:

?- function([a,[b,c],d],X).  
X = [a,b,c,d]
?- function([[a],[[b]],[c,[d]]],X).
X = [a,b,c,d]

我在手册中找到了以下代码:
function([],[]):- !.  
function([H|T],[H|R]):- \+ lst(H), !, function(T,R).
function([H|T],L):- function(H,L1), function(T,L2),
append(L1,L2,T).

不幸的是,它没有说明 lst(H) 是哪个函数。
另外,我无法理解 lst() 究竟做了什么并定义它,结果它显示为未定义。

如果有人能理解 lst 应该如何定义,或者只是给我一个关于如何做我正在尝试的事情的替代方案,我将不胜感激..

最佳答案

在我看来 lst(X) 应该是真的,如果 X 是一个列表。在 SWI 中,等效谓词称为 is_list/1。在您的代码中,+ 用于否定,但我熟悉 \+ . (啊,我明白了,该网站吞下了 \ )

编辑:最后一行的最后一个 T 应该是 L:

function([H|T],L):- function(H,L1), function(T,L2), append(L1,L2,L).

我试过了,它在 SWI 中有效。

关于prolog - 要列出的没有深度的列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4595263/

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