加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala传感器和Clojure传感器有什么相似之处和不同之处?

发布时间:2020-12-16 08:55:49 所属栏目:安全 来源:网络整理
导读:Paul Chiusano和 Rúnar óli写了一本很棒的书 Functional programming in Scala.在它中他们提到了Scala社区中一个有点引用的概念 – Transducers. 在Clojure社区 – Transducers获得little more press. 我的问题是:Scala Transducers **(来自Scala中的功能
Paul Chiusano和 Rúnar óli写了一本很棒的书 Functional programming in Scala.在它中他们提到了Scala社区中一个有点引用的概念 – Transducers.

在Clojure社区 – Transducers获得little more press.

我的问题是:Scala Transducers **(来自Scala中的功能编程一书)和Clojure Transducers之间有什么相似之处和不同之处?**

假设:

我知道

>传感器是their concept in Electrical Engineering的常用说法
>有一个预先存在的概念in Computer Science called a Finite State Transducer
>有一个先例in Biology and Psychology adopting the word transduction
>其他技术书籍有already a history,如SICP adopting the word Transducers.

解决方法

我并不是特别熟悉Scala的传感器概念或术语无处不在,但是从上面发布的文本片段(以及我对传感器的了解),我可以这么说:

>他们非常不同
>它们之间的相似之处仅在于它们都与将一个集合转换为另一个集合的方式有关

关于Scala传感器我能说些什么:

从上面的定义看来,任何函数或者可以用大致沿着符号线的签名来调用

Stream[A] -> Stream[B]

因此,例如,在这种情况下,工作流的映射函数将被视为传感器.

而已;非常简单.

Clojure传感器:

A Clojure transducer是将一个缩小功能转换为另一个缩小功能的功能.减少函数是可以与reduce一起使用的函数.也就是说,如果Clojure有签名,它将有一个签名

(x,a) -> x

在英语中,给定一些起始集合x,并且集合中的“下一个东西”a被减少,我们的reduce函数返回“正在构建的集合的下一个迭代”.

因此,如果这是减少功能的标志,则换能器具有签名

((x,a) -> x) -> ((x,b) -> x)

将传感器添加到Clojure的原因是,通过添加或core.async频道,Rich Hickey和朋友发现自己重新调整所有标准收集功能以使用频道(地图,过滤器,拍摄等). RH想知道这里是否有更好的方法,并开始思考如何从手头的集合类型的机制中获取这些各种集合处理函数的逻辑.准确地解释换能器是如何做到这一点的,我认为超出了这个问题的范围,所以我会回到这一点.但是如果你感兴趣的话,有很多关于这方面的文献很容易找到并且可以解决.

那么这些事情如何相关呢?

显然,这些是非常不同的概念,但这里我看到它们的相关性:

虽然Scala传感器是Streams的集合处理函数(与其他Scala集合相似),但Clojure的传感器实际上是一种统一不同集合类型的集合处理函数实现的机制.因此,如果Scala有Clojure的传感器概念,Scala的传感器概念可以用Clojure的传感器概念来实现,这是一种更抽象/通用的处理函数可重用于多种集合类型.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读