问题标签 [difference-lists]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
list - 测试 Prolog 差异列表
我一直在阅读关于差异列表的巨大差异,我希望能测试书中的一些示例。但似乎您不能以与 append([1,2,3], [4,5], X) 相同的方式将列表作为输入传递,其中 X=[1,2,3, 4,5]。奇怪的是,我查阅过的任何一本书都没有提到这一点。
我在 swipl 上运行代码,我有兴趣测试一个差异附加谓词:
和“旋转列表的第一个元素”谓词:
任何想法,我如何在 swipl 中测试这些谓词?
sorting - 是否可以只通过一次就对列表进行快速排序?
我正在学习haskell,我看到的函数定义是:
是否可以只遍历列表一次而不是 3 次来编写它?
list - 在 Prolog 中展平列表
我只用 Prolog 工作了几天。我明白一些事情,但这真的让我很困惑。
我想写一个函数来获取一个列表并将其展平。
该函数取出列表的内部结构。
这是我到目前为止所拥有的:
现在,当我打电话时这有效:
但是当我打电话查看我输入的列表是否已经展平时,返回false
而不是true
:
为什么一方面有效,另一方面无效?我觉得我错过了一些非常简单的东西。
prolog - 将 Prolog 函子转换为具有差异列表的函子
我正在为 Prolog (SWI) 做作业,但不知道如何完成这项工作:
我有函子:
它告诉给定列表是否是回文。
对于我的作业,我必须编写一个palindrome/2
没有append/3
和有差异列表的函子。
我知道差异列表是 的一种形式[Y|X]-X
,但我不明白如何使用它以及它如何替换附加函子。
有人可以向我解释一下吗?
lisp - 首先排序原子,然后从 LISP 中的列表中子列表
我在 LISP 中有这个作业,我需要整理原子,然后从列表中列出子列表。我确信这应该是一件容易的事,但由于我不是一个程序员,所以这真的需要很长时间才能让我理解。
我有这个数字列表:
如果我正确理解我的任务,那么我应该得到这样的结果:
到目前为止,我发现的只是如何计算原子和/或子列表,但我不需要。
即使只有子列表,只有原子或只有空列表,该功能也应该正常工作。
也许有人可以给我任何例子?
提前致谢!
algorithm - Haskell:展平二叉树
我正在考虑将二叉树展平为列表,以供以后处理。
我首先想到了使用(++)
来连接左右分支,但后来认为在最坏的情况下需要O(n^2)
时间。
然后我想到了向后构建列表,使用(:)
以线性时间追加到前面。但是,然后我想如果我将此列表发送到类似折叠的函数,它必须等到整个树被遍历才能开始折叠,因此不能使用list fusion。
然后我想出了以下内容:
这是否会O(n)
及时工作,占用的“堆栈空间”不超过树的最大深度,并且可以与消耗函数融合(即消除中间列表)?这是压平树的“正确”方法吗?
prolog - prolog差异列表和zipWith
我有一个 zipWith 功能:
它工作正常,但现在我想为差异列表做,所以我添加了
但是当我运行测试时
我收到一条错误消息,说我不在本地堆栈中,我做错了什么?
performance - 为什么差异列表比 Haskell 中的常规连接更有效?
我目前正在在线阅读Learn you a Haskell一书,并且已经到了作者解释某些列表连接可能效率低下的章节:例如
据说效率低下。作者提出的解决方案是使用定义为的“差异列表”
我很难理解为什么DiffList
在某些情况下比简单的连接在计算上更有效。有人可以简单地向我解释一下为什么上面的例子效率如此之低,以及以什么方式DiffList
解决了这个问题?
prolog - “开放式列表”和“差异列表”之间的区别
“开放式列表”和“差异列表”有什么区别?
prolog - 差异列表不完整
我想将不完整的列表转换为差异列表,反之亦然。
这是将常规列表转换为差异的代码:
我怎么去另一个方向?