difference-lists相关内容

如何将元素附加到 Prolog 中的列表中?

如果我在 Prolog 中有一个列表,例如 X = [1, 2, 3, 4],我如何将元素 5 添加到列表的末尾以使 X = [1, 2, 3, 4,5]? append 函数需要两个列表,即 append(A,B,C) 将 A 和 B 连接到列表 C. 我可以用一个临时列表 Y = [1, 2, 3, 4] 和 Z = [5] 来做这个,然后做一个追加(Y,Z,X),但我不喜欢有一个 ..
发布时间:2022-01-12 10:25:44 其他开发

了解差异列表 (Prolog)

我无法理解差异列表,尤其是在这个谓词中: 回文(A,A).回文([_|A],A).回文([C|A],D):-回文(A,B),B=[C|D]. 谁能帮我看看发生了什么? 解决方案 palindrome(A, A).回文([_|A],A).回文([C|A],D):-回文(A,B),B=[C|D]. 将此谓词的参数视为差异列表,第一个子句说,从 A 到 A 的列表(即空列表)是回文. ..
发布时间:2022-01-12 10:25:12 其他开发

差异列表的显式纯函数数据结构

在 Haskell 中,差异列表,从某种意义上说 [a] 具有高效连接操作的列表表示 似乎是在功能上实现的组成. 函数和(动态)函数组合,虽然,也必须使用数据结构以某种方式在计算机的内存中表示,这提出了如何dlists 可以在 Haskell 中实现, 不使用函数组合,而是通过一些基本的纯功能节点数据结构.如何在与函数组合相同的性能保证下做到这一点? 解决方案 如这个答案 ..

在 Prolog 中展平列表

我只使用 Prolog 几天.我明白一些事情,但这真的让我很困惑. 我想编写一个函数,该函数接受一个列表并将其展平. ?- flatten([a,[b,c],[[d],[],[e]]],Xs).Xs = [a,b,c,d,e].% 预期结果 该函数取出列表的内部结构. 这是我目前所拥有的: flatten2([],[]).flatten2([Atom|ListTail],[Ato ..
发布时间:2021-12-06 14:09:48 其他开发

打开列表和成员

因为我想避免 append/3 的成本,所以我使用差异/开放列表. 然而,开放列表的问题在于 member/2 通过将元素添加到尾部来对开放列表做出反应.例如: ?- L=[a|_],member(b,L).L = [a, b|_G1196] ;L = [a, _G1195, b|_G1199] ;L = [a, _G1195, _G1198, b|_G1202] ;L = [a, _G1 ..
发布时间:2021-06-22 19:03:42 其他开发

结构(差异列表)序言

这个问题参考了本书第3章的材料:使用 Prolog、Clocksin 和 Mellish 编程,第 5 版 本书第 72 页显示了一个使用差异列表的程序: partsOf(X,P):- partsacc(X,P,Hole) , Hole=[].partacc(X,[X|Hole],Hole):-basicpart(X).partacc(X,P,Hole):- 装配(X,Subparts), ..
发布时间:2021-06-22 18:57:31 其他开发

“-"是什么意思?处理列表时,Prolog 中的符号是什么意思?

我正在阅读这个的答案 问题, p(X) :- 读取(A), q(A,X-[]).q(end,X-X) :- !.q(A,[A|X]-Y) :- 读取(B), q(B,X-Y). 上面的代码使用语法List-List.我有点明白发生了什么,但我想知道“-"符号/谓词在这里做了什么.另外,这个 SWI 是特定的吗? 解决方案 (-)/2 表示差异列表是一个相当不常见的约定.在旧书中,还使用 ..
发布时间:2021-06-22 18:55:47 其他开发

如何在 Prolog 解释器中使用差异列表

当我写下 这个问题在一个空列表中作为差异列表 我想测试我对这些结构的了解.然而,当我尝试像比较不同的符号这样简单的事情时,似乎我错了,而且我没有不理解差异列表的实际情况. ?- L = [a,b,c|[d,e]]-[d,e], L = [a,b,c].false % 预期为 true 我在 SWI-Prolog 和 SICStus 上对此进行了测试.我验证了这个符号,因为它是 Bratko 的 ..
发布时间:2021-06-22 18:46:22 其他开发

Prolog 和可变变量中的差异列表

差异列表是一种“绕过"变量在序言中不可变这一事实的手段吗? 即如果我使用差异列表实现附加: diff_append(OpenList, Hole, L2) :-孔 = L2. 然后运行: X=[a,b,c|Hole], diff_append(X, Hole, [d,e,f]). 在某种程度上,X 已被用作可变变量.为了我们的意图和目的,它已经改变了吗? 换句话说,事实上我们已 ..
发布时间:2021-06-22 18:41:24 其他开发

了解差异列表

我正在尝试理解 Prolog 中的差异列表,但我很难真正正确地实现一个,每次我尝试这样做时,我都会得到一个列表列表,但这不是我想要的.我正在尝试实现一个附加谓词,但到目前为止运气不佳.很少尝试,所有这些都不起作用. app(X, Y, Z) :- Z = [X|Y].?- app([a,b,c], [z], Z).Z = [[a,b,c],z]. 或 app(X, Y, Z) :- Z = ..
发布时间:2021-06-22 18:41:01 其他开发

差异列表的显式纯功能数据结构

在Haskell中, 差异列表 [a]具有有效串联操作的列表表示形式 似乎是在功能上实现的组成. 但是,还必须使用数据结构以某种方式在计算机内存中表示功能和(动态)功能组合,这引发了以下问题:解决方案 卡尔在评论中打了它.我们可以写 data TList a = Nil | Single a | Node !(TList a) (TList a) singleton :: ..

了解差异列表(序言)

我在理解差异列表时遇到了麻烦,尤其是在该谓词中: palindrome(A, A). palindrome([_|A], A). palindrome([C|A], D) :- palindrome(A, B), B=[C|D]. 有人可以帮助我跟踪发生的事情吗? 解决方案 palindrome(A, A). palindrome([_|A], A). palindr ..
发布时间:2020-05-23 21:07:19 其他开发

Perfoming成员检查差异列表,但是如何?

我试图回答另一个问题(虽然是错误的),但这导致了一个关于“差异列表"(或“列表差异")的问题,这似乎是一个更合适的名称,除非"Escherian Construction"不是首选. > 我们有一个元素obj(X,Y)的完整列表(X和Y都接地).我们只想保留从前到后遍历列表时尚未遇到X的第一个obj(X,_).这些“第一个元素"必须按出现顺序出现在结果中. 让我们通过测试用例指定问题: ..
发布时间:2020-05-02 08:18:02 其他开发

是否可以在Prolog中写一个空列表作为差异列表?

对于像我这样的Prolog初学者来说,空列表很奇怪.我会说不可能写一个空列表[]作为差异列表T1-T2,就像不可能写一个原子作为差异列表一样.但是,我猜想要使用递归,必须存在一种在差异列表设置中使用[]的方法.我为此提供了Google服务,但找不到答案,而Bratko(用于AI的Prolog编程)只是短暂地触及了这个主题. 那么,是否有可能在Prolog中写一个空列表作为差异列表,如果有的话 ..
发布时间:2020-05-02 07:49:19 其他开发

如何在Prolog中将元素添加到列表中?

如果我在Prolog中有一个列表,例如X = [1、2、3、4],如何将元素5添加到列表的末尾以使X = [1、2、3、4, 5]? append函数需要两个列表,即append(A,B,C)才能将A和B连接到列表C. 我可以使用临时列表Y = [1,2,3,4]和Z = [5]来执行此操作,然后执行append(Y,Z,X),但是我不喜欢使用临时列表. 通常的免责声明在这里适用 ..
发布时间:2020-05-02 06:55:36 其他开发