写点什么

Clojure 1.7 引入 Transducers,提高跨平台支持度

  • 2015-08-05
  • 本文字数:861 字

    阅读完需:约 3 分钟

Cognitect 的 Alex Miller:Transducers 和reader conditionals 是Clojure 1.7 最重要的两个特性。 Transducers 的目标是使不同的集合可组合算法转换, 而 reader conditionals 可以用来改善 Clojure 跨 JVM 和 JavaScript 平台的可移植性。

Transducers

Transducers 是一种减量函数转换器(reducing function transformers),获取一种减量函数并返回另一种的函数。减量函数仅仅是一种可以用来 reduce 的函数。Rich Hickey解释说: transducers 的主要优势是它们允许分离三个主要问题:

  • 减量函数是什么;
  • 应用在哪些集合中;
  • reduce 的输入。

在 Clojure 1.7 中,为了支持 Transducers,像 map、cat、filter 等大多数序列函数,在输入集合中都添加了一个新的参数。例如,

(def tr1 (map f))将会返回一个 map transducer。此外,Transducers 可以通过 Comp 函数组合:

(def xform (comp (filter odd?)(map inc)))来提供一个新的 Transducers。一旦你有了一个 Transducers,你可以把它应用在几个方面,例如矢量数据。

(Sequence Xform data)使用 Transducers 函数替代 sequence,你将会获得跟将 reduce 应用在 data 上同样的结果并获得组合函数原型。

上面示例的主要好处是:如果使用简单的组合功能,当它运行时,仅仅建立一个 lazy sequence 而不是三个。

Reader conditionals

Reader conditionals 是 Clojure 1.7 引入的一种新的格式,可以由 Clojure 和 ClojureScript 加载,并可以应用在.cljc 文件语境中。把多个 Clojure 平台使用一种代码库作为目标的方法,使得拥有库和应用程序成为可能,并且 Reader conditionals 提供的机制让处理平台特定代码时更加容易。

类似于 cond 形式,Reader conditionals 表达式允许为每一个平台指定应该使用的平台特定代码。例如下面的表达式:

[1 2 #?@(:clj [3 4] :cljs [5 6])]在 Clojure 上我们将会得到 [1 2 3 4],在 ClojureScript 上是 [1 2 5 6]。

Clojure 1.7 除了 Transducers 和 Reader conditionals,还包含了更多新的特性和增强功能。

查看英文原文 Clojure 1.7 Introduces Transducers, Improves Cross-platform Support

2015-08-05 07:082135
用户头像

发布了 92 篇内容, 共 28.9 次阅读, 收获喜欢 4 次。

关注

评论

发布
暂无评论
发现更多内容

为什么低代码让开发者头疼?6 款好用工具推荐

NocoBase

开源 开发者 低代码 零代码 开发工具

淘宝拍立淘图片搜索API接口指南(淘宝API系列)

tbapi

淘宝API接口 淘宝图片搜索接口 淘宝拍立淘接口

人工智能丨ChatGPT 免费开放网络搜索,能否挑战 Google 的搜索霸主地位?

测试人

MaxCompute x DataWorks × DeepSeek,实现使用自定义数据集微调DeepSeek-R1蒸馏模型

阿里云大数据AI技术

大数据 云原生 MaxCompute Dataworks DeepSeek

AI口语练习APP的主要功能

北京木奇移动技术有限公司

软件外包公司 AI口语练习 AI口语学习

仓库管理 RPA 技术全解析:优势、应用场景与厂商

Techinsight

RPA Agent 仓库管理系统

从德勤“小勤人”说起:财务RPA如何革新财务工作全流程?

Techinsight

RPA 财务管理 财务办公 Agent智能体

2025新趋势:传统车企数字化转型有新招啦!

Techinsight

AI RPA 车企 车企数字化 Agent智能体

Elasticsearch:使用阿里云 AI 服务进行向量化和重新排名

阿里云大数据AI技术

人工智能 elasticsearch Qwen DeepSeek

TechSmith Snagit v2024.4.1 中文版 mac/win最强截图工具

Rose

法院信息化 4.0 版,RPA 如何革新司法流程?

Techinsight

法院 信息化建设 RPA Agent Agent智能体

京东联盟广告生成式推荐探索与实践-DPO多目标优化

京东零售技术

全面开测 - 零门槛,即刻拥有DeepSeek-R1满血版,百万token免费用

小隐乐乐

AI口语练习APP的对话练习

北京木奇移动技术有限公司

软件外包公司 AI口语练习 AI口语学习

MES中的四大现场执行管理模式详解

万界星空科技

数字化转型 制造业 mes 万界星空科技mes 生产管理MES系统

JetBrains CLion v2024.3.4中文激活安装教程 附永久密钥

Rose

JetBrains WebStorm v2024.3.4 (JavaScript集成开发环境) 中文激活版

Rose

Color Wheel for Mac(mac色轮工具)v8.5中文激活版

Rose

Typora:极简主义者的Markdown写作神器

Rose

Python爬虫实战:淘宝商品列表API接口指南(附代码)

tbapi

淘宝API 关键词搜索淘宝商品列表 淘宝商品列表数据采集 淘宝商品列表接口

35W+京东商家共同选择的京点点AIGC平台,内容生成妙在哪里? | 京东零售技术实践

京东零售技术

Clojure 1.7引入Transducers,提高跨平台支持度_后端_Sergio De Simone_InfoQ精选文章