问题标签 [transducer]

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.

0 投票
1 回答
268 浏览

haskell - 这些用柯里化和换能器实现的功能有什么区别?

取下面三个函数,分别在 Haskell 和 Clojure 中实现:



当它们被应用到一个列表时,[1, 2, 3, 4, 5]它们都返回42。我知道前两个背后的机制是相似的,因为map在 Clojure 中是惰性的,但第三个使用了传感器。有人可以展示执行这些功能的中间步骤吗?

0 投票
2 回答
597 浏览

clojure - 序列对换能器有什么作用?

关于的两个相关问题sequence

给定一个换能器,例如(def xf (comp (filter odd?) (map inc)))

  1. (into [] xf (range 10))or(into () xf (range 10))和之间有什么关系(sequence xf (range 10))?只是没有可以用作第二个参数的惰性序列的语法into,所以我们需要一个单独的函数sequence来实现这个目的吗?(我知道它sequence还有另一种非转换器用途,将集合强制转换为一种或另一种序列。)

  2. Clojure 转换器页面说,关于sequence上面那个的使用,

生成的序列元素是增量计算的。这些序列会根据需要增量消耗输入,完全实现中间操作。此行为不同于惰性序列上的等效操作。

对我来说,这听起来好像sequence没有返回一个惰性序列,但是文档字符串sequence说“当提供了一个转换器时,返回一个惰性序列的转换应用程序到 coll(s),....中的项目”,事实上(class (sequence xf (range 10)))回报clojure.lang.LazySeq。我想我不明白上面从 Clojure 转换器页面引用的最后一句话。

0 投票
1 回答
915 浏览

vb.net - 滚动平均值,vb.net

我有一个传感器(实际上是 Quartzonix 压力传感器),它通过串行端口输出数据,大约每秒 3 次。我想设置一些代码,以便根据 x 数量的样本给我一个平均读数。

输出看起来像这样:

.. 并且会一直持续下去,直到 com 端口关闭或传感器收到另一个命令。

这是我到目前为止的代码,代码可以向我展示传感器实际输出的内容:

“$01MC”是传感器开始输出数据所需的命令。当我单击开始按钮时,我发生了一些奇怪的超时事情,但那是另一个节目(可能需要 .readtimeout 调整,不确定)。

我有一个文本框 txtReadingsToAvg 用于输入要平均多少读数。 ,甚至进入另一个文本框)。

0 投票
1 回答
605 浏览

clojure - 使用 Clojure 转换器解析大文件:OutOfMemory 错误

我想解析一个大的 json 文件(3GB)并为这个文件中的每一行返回一个哈希映射。我的直觉是使用传感器逐行处理文件并构造一个带有一些选定字段的向量(> 文件中的 5% 字节)。

但是,以下代码会引发 OutOfMemory 异常:

文件.json

解析器.clj

当我使用 JVisualVM 可视化进程时,堆会随着时间的推移而增长,并在进程崩溃之前超过 25 GB。

在这种情况下传感器是否合适?有更好的选择吗?

我的要求之一是在函数末尾返回新结构。因此,我不能使用 doseq 就地处理文件。

此外,我需要根据文件格式更改解析器和转换器。

谢谢 !

0 投票
2 回答
613 浏览

python-3.x - 如何通过点文件可视化 Pyfst 传感器

我正在学习如何使用 Pyfst 创建传感器,并且我正在尝试可视化我创建的传感器。最终目标是能够将传感器写入点文件并在 Graphviz 中查看它们。

我拿了一个示例代码来看看如何可视化以下接受器。

当我使用软件包附带的 draw() 时,出现错误:

如果我尝试通过以下方式将上述接受器写入 .dot:

然后我也收到以下错误:

所以,这两个错误看起来都一样——draw() 存在某种问题。在 pyfst 站点上,它说 draw 用于换能器的点格式表示。

我不明白如何修复错误。任何帮助将不胜感激。

我正在使用 OSX 和 PyCharm。

0 投票
3 回答
360 浏览

javascript - 带有休息运算符、reducer 和 mapper 的函数组合

我正在关注一篇关于JavaScript 中的 Transducers的文章,特别是我定义了以下函数

现在我想定义一个组合运算符

我看到它在以下情况下有效

相当于

整个剧本在线

我不明白为什么我不能将最后一个函数 ( sumOf) 与组合运算符 ( more) 连接起来。理想情况下我想写

但它不起作用。

编辑

很明显,我最初的尝试是错误的,但即使我将组合定义为

我仍然无法compose(divtwo,squares)(sumOf)替换compose(divtwo,squares,sumOf)

0 投票
1 回答
504 浏览

clojure - Clojure 中的完成函数有什么作用?

我在clojuredocscompleting上遇到过功能,但目前没有文档。

你能提供一些例子吗?

0 投票
2 回答
374 浏览

clojure - Clojure 中的传感器内的 Pmap

我想在传感器中使用 pmap,如果我使用常规映射编写代码,它可以正常工作。但是,如果我使用 pmap 我会得到一个异常值。是否有可能在 clojure 中实现这一点,还是我做错了什么?如果这是不可能的,有人可以指出为什么会发生这种情况的文档吗?只是出于好奇。下面粘贴的是我的代码和 arity 异常的开始。

0 投票
1 回答
607 浏览

performance - In Clojure, how can I do a performant version of `frequencies` with transducers?

(Question credit: Fernando Abrao.)

I hear about the performance benefits of transducers in Clojure, but I'm not sure how to use them.

Say I have a qos/device-qos-range function that returns sequence of maps, some of which contain a decimal :samplevalue, like so:

I'd like to see how many :samplevalues fall into each integer bin, like so:

How can I turn this into a fast version with transducers that eliminates intermediate data structures (such as the one returned by reduce)? Bonus points for code that can take advantage of multiple cores to do parallel processing.

0 投票
1 回答
49 浏览

javascript - 组合函数的执行顺序

我一直在阅读传感器并尝试掌握这个概念。我现在有点理解它们了,但是在我摆弄的过程中,我遇到了一些非常奇怪的东西,让我目瞪口呆。我希望有人能解释我所缺少的。

我有 2 个具有签名的传感器:reducer -> reducer

我还有一个简单的撰写功能:const compose = (f, g) => x => f(g(x))

当我组成​​ 2 个换能器时:

我希望评估是从右到左,在这种情况下,在过滤之前应用映射变换。相反,首先应用过滤(给出预期的答案)。

但是 f(g(x)) 运行 g(x) 的结果 f,所以我的结果应该反映:

但相反,它反映了(正确):

(见下面的代码)

为什么??!!(我怀疑一旦有人向我解释这里发生的事情,我的理解就会发生巨大的飞跃)。