问题标签 [accumulator]
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.
haskell - 无可辩驳的模式不会在递归中泄漏内存,但为什么呢?
下面mapAndSum
代码块中的函数结合了map
and sum
(别介意sum
在主函数中应用了另一个,它只是为了使输出紧凑)。是惰性计算的map
,而sum
是使用累加参数计算的。这个想法是,map
可以在内存中没有完整列表的情况下使用结果,并且(仅)之后sum
可以“免费”使用。main 函数表明我们在调用mapAndSum
. 让我解释一下这个问题。
根据 Haskell 标准,无可辩驳的模式示例let (xs, s) = mapAndSum ... in print xs >> print s
被翻译成
因此,两个print
调用都携带对整个对的引用,这导致整个列表被保存在内存中。
我们(我的同事 Toni Dietze 和我)使用明确的case
声明(比较“bad”与“good2”)解决了这个问题。顺便说一句,发现这一点花了我们相当多的时间..!
现在,我们不明白的是两个方面:
为什么
mapAndSum
首先工作?它还使用了一种无可辩驳的模式,因此它也应该将整个列表保存在内存中,但显然不是。并且将 the 转换let
为 acase
会使函数表现得完全不懒惰(以至于堆栈溢出;没有双关语的意思)。我们查看了 GHC 生成的“核心”代码,但据我们所知,它实际上包含与上述相同的翻译
let
。所以这里没有线索,而是更多的混乱。为什么会“坏”?关闭优化时工作,但打开时不工作?
关于我们的实际应用的一个评论:我们希望实现一个大文本文件的流处理(格式转换),同时还积累一些值,然后写入一个单独的文件。如前所述,我们成功了,但两个问题仍然存在,答案可能会提高我们对 GHC 的理解,以应对即将到来的任务和问题。
谢谢!
android - Android:如何累积保存的 int?
我有一个称为硬币的 int,每当用户收集一些硬币时就会显示它。每当显示活动时它都设置为零,但我想在另一个页面上显示累积结果。这就是我积累结果的方式:
我已经显示了,totalCoins
但是每当应用程序被终止并恢复时,totalCoins 都会设置回 0。我尝试使用共享首选项保存它,方法是使用这些方法
然后使用了putValue("TotalCoins", totalCoins);
,totalCoins = getValue("TotalCoins", 0);
我如何累积数量硬币,同时将硬币设置为0,并且在重新启动活动时仍然累积它?
haskell - Haskell 嵌套循环累加器
我正在将我的服务器端编程语言从 PHP 修改为 Haskell,因此我并不完全熟悉函数式语言设计。
在这里,我想将类似以下 php 函数的部分处理代码转换为 Haskell:
我想会大量使用 map/mapM_ 函数,但是累积将如何工作?我开始认为在这一点上增加的安全性不值得转型。
谢谢。
c++ - 能够删除旧样本的 C++ 累加器库
在 Boost.Accumulator 中,您可以将样本添加到累加器中,然后从中提取统计量。例如:
该库有许多更复杂的统计量,例如skewness
、kurtosis
或p_square_cumulative_distribution
.
我想做的是这样的:
pop()
将以 FIFO(先进先出)方式工作。我正在尝试做的是在滑动时间窗口内以在线(增量)方式计算我的数据的统计信息。
累加器必须在内部保留所有值。
我可以自己做,但我总是喜欢先检查现有库,并且可能有我不知道的算法可以在数据传入或传出时巧妙地计算数量。
function - 使用累加器的 Haskell 递归
我正在尝试创建一个函数,该函数将在给定列表的情况下查找 3 个相同和相邻的数字,用于我正在尝试实现的求解器。然后,如果有3个相同和相邻的数字,它将第1个和第3个相同的数字标记为'0',并将中间值设置为负数。
我想知道为什么这给了我一个错误。:
c++ - 计数器和累加器有什么区别?
我不确定有什么区别,但这里有问题。
编写一个赋值语句,将名为 numStudents 的计数器变量更新 1。 它会是:
学生人数 = 学生人数 + 1
? 我的另一个问题是
编写一个赋值语句,用 sales 变量中的值更新一个名为 total 的累加器变量。 会不会是一样的:
总计 = 总计 + 销售额
?
python - 使用 Python 减少对列表
我试图将列表中的一堆元素配对在一起以创建最终对象,其方式类似于制作对象的总和。我正在尝试使用一个简单的变体来reduce
考虑您考虑对列表而不是平面列表的位置来执行此操作。我想做一些类似的事情:
除了我想在数字列表中每个元素特定的总和中添加其他信息nums
。例如,对于列表中的每一对 (a,b),将总和运行为 (a+b):
这不起作用:
为什么它不起作用?我知道我可以编码nums
为一个平面列表——这不是重点——我只是希望能够创建一个 reduce 操作,它可以迭代一个对列表,或者同时迭代两个相同长度的列表,并从两者中汇集信息列表。谢谢。
sql - 如何累积所有值
我想显示的输出是总 EMPL_NUM 的累加器。例如,字段 TOTAL_FEBRUARY=TOTAL_JANUARY+TOTAL_FEBRUARY 中显示的值,而字段 TOTAL_MARCH=TOTAL_MARCH+TOTAL_JANUARY+TOTAL_FEBRUARY 中的值存在。我希望你们中的一些人可以提供解决方案。非常感谢你。编码如下图所示:
此处输入代码
string - 将字符串与带有累加器的 shell 脚本连接起来
我想将一个用 '\n' 分隔的列表转换为另一个用空格分隔的列表。例如:获取像 ispell 英语词典这样的词典。http://downloads.sourceforge.net/wordlist/ispell-enwl-3.1.20.zip
我最初的想法是使用变量作为累加器:
...但它会产生 '\n' 字符串!!!
问题:
- 为什么它不起作用?
这样做的正确方法是什么?
谢谢。
prolog - 我应该避免在 Prolog 和一般情况下进行尾递归吗?
我正在通过“Learn Prolog now”在线书籍来寻找乐趣。
我正在尝试使用累加器编写一个谓词,该谓词遍历列表的每个成员并向其添加一个。我已经很容易做到了,没有尾递归。
但我读过,出于性能原因,最好避免这种类型的递归。这是真的?总是使用尾递归是否被认为是“好习惯”?使用蓄能器来养成一个好习惯值得吗?
我试图将此示例更改为使用累加器,但它反转了列表。我怎样才能避免这种情况?