Linux 之父出席、干货分享、圆桌讨论,精彩尽在 OpenCloudOS 社区开放日,报名戳 了解详情
写点什么

Facebook 在 Reason 3 中对 ReasonML 的语法做了重大修改

  • 2017 年 11 月 13 日
  • 本文字数:839 字

    阅读完需:约 3 分钟

Facebook 试图通过 Reason 将 OCaml 的安全性和运行速度带给 JavaScript 开发人员。该语言达到了3.0 版本,引入了新的语法,修复了许多Bug。

Reason 语法其中一个最显著的变化是使用 JavaScript 的application/abstraction语法代替了 OCaml 的语法。这意味着,在 Reason 3 中,开发人员在调用函数时可以像在 JavaScript 中那样把两个参数括起来:

复制代码
myFunction(arg1, arg2) // 类似 C 语法的新语法
myFunction arg1 arg2 // 类似 OCaml 语法的旧语法

其他值得注意的变化有:

  • 使用{.}声明 JavaScript 对象类型的新语法,例如:
复制代码
type payload = {. // no need to call Js.t here
"name": string,
"age": int
};
  • 使用标签参数扩展了对类型双关的支持,新语法使用~代替了::。开发人员可以像下面这样声明并调用带有标签参数的函数:
复制代码
let addCoordinates = (~x, ~y) => {
/* 使用 x 和 y */
};
...
addCoordinates(~x=5, ~y=6);

可以和以前的语法作下比较:

复制代码
let addCoordinates x::x y::y => {
/* 使用 x 和 y */
};
...
addCoordinates x::5 y::6;

此外,类型双关(如上例所示,允许开发人员使用~x代替更为繁琐的~x as x)应该和类型注解一起使用,这在以前是不支持的:

复制代码
let add = (~first: int, ~second: int) : int => first + second;
  • 字符串连接现在可以使用++操作符代替^了。
  • 逻辑非使用代替了not

已经有 Reason 代码库的开发人员不必担心这种程度的语法变化,这主要是为了让 JavaScript 开发人员感觉更自然。其实,Reason 3 提供了迁移脚本,可以确保过渡比较容易。

Reason 另一个大有前途的新特性是提供了正式的 API,让开发人员可以访问 Reason 解析器 refmt。 Klipse reason-tools 、Reason 文档站点等工具都是基于该解析器的。

Reason 是 Facebook 试图将 OCaml 可靠的类型系统带到 JavaScript 开发环境的产物。它以 BuckleScript 为核心,提供了迎合 JavaScript 编程人员喜好的语法,因为他们可以会认为 OCaml 的语法有点不太友好。

查看英文原文: Facebook Overhauls ReasonML Syntax in Reason 3

2017 年 11 月 13 日 18:001271
用户头像

发布了 1008 篇内容, 共 338.0 次阅读, 收获喜欢 320 次。

关注

评论

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

云知声 Atlas 超算平台: 基于 Fluid + Alluxio 的计算加速实践

阿里巴巴云原生

阿里云 云原生 实践 Fluid Alluxio

架构训练营毕业总结

小卷儿

端开发技术——解密Flutter响应式布局.md

思想者杰克

HashMap 中的一个“坑”!

王磊

Java hashmap LinkedHashMap

赋能优秀传统文化,区块链助力讲好中国故事

CECBC

阿里大牛教你如何用Dubbox+SpringBoot+Docker架构,实现双11项目

编程 程序员 springboot

区块链+农业开启智能化生产时代 解决世界性食品及粮食安全问题

CECBC

【死磕Java并发】-----深入分析synchronized的实现原理

chenssy

死磕 Java 死磕 Java 并发

大牛呕心力作——Kafka开发实战,助你徜徉大数据时代

redis 程序员 java编程

杂谈——什么是Google Fuchsia ?

思想者杰克

算法—算法的时间空间复杂度

思想者杰克

模块7作业

4anonymous

小谈音视频质量检测

声网

人工智能 音视频

开源项目——FLutter/iOS/Android编写的三个计算器APP

思想者杰克

面试必备!阿里内部Java面试八股文出炉,教科书式完美回答

Sakura

Java 程序员 架构 面试

20道阿里面试必问JVM面试专题(文末附送答案及JVM学习文档)

编程 程序员 JVM

软件架构治理 之 架构混沌之谜

码猿外

架构 软件架构治理

开源项目——FLutter开发录音APP

思想者杰克

开源项目——5种技术编写的7个demo工程

思想者杰克

端开发技术——FLutter开发即时通讯

思想者杰克

如何在实际场景中使用异常检测?阿里云Prometheus智能检测算子来了

阿里巴巴云原生

阿里云 云原生 Prometheus 异常检测

开源项目——swift开发记事本APP

思想者杰克

模块七作业

Geek_fc100d

「架构实战营」

干货!Spring Cloud微服务架构进阶,你还不了解的都在这里

Java 程序员 架构 微服务 SpringCloud

04 K8S之生态系统

穿过生命散发芬芳

k8s 11月日更

你管这破玩意叫锁

中间件兴趣圈

高并发 java; 11月日更

十年数据库专家,呕心力作MySQL技术精粹,薪资直涨3K其实很轻松

数据库 程序员 MySQL 数据库

架构课毕业总结

伏波

架构

pygame 小游戏前的准备工作要做足

梦想橡皮擦

11月日更

王者荣耀商城异地多活架构设计

guangbao

Redis利用漏洞

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

GPU容器虚拟化:用户态和内核态的技术和实践详解

GPU容器虚拟化:用户态和内核态的技术和实践详解

Facebook在Reason 3中对ReasonML的语法做了重大修改_JavaScript_Sergio De Simone_InfoQ精选文章