当前位置:统一通信/协作企业动态 → 正文

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

责任编辑:editor004 作者:Sergio De Simone |来源:企业网D1Net  2017-11-14 11:32:34 本文摘自:INFOQ

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

关键字:FacebookBuckleScript

本文摘自:INFOQ

x Facebook在Reason 3中对ReasonML的语法做了重大修改 扫一扫
分享本文到朋友圈
当前位置:统一通信/协作企业动态 → 正文

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

责任编辑:editor004 作者:Sergio De Simone |来源:企业网D1Net  2017-11-14 11:32:34 本文摘自:INFOQ

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

关键字:FacebookBuckleScript

本文摘自:INFOQ

电子周刊
回到顶部

关于我们联系我们版权声明隐私条款广告服务友情链接投稿中心招贤纳士

企业网版权所有 ©2010-2024 京ICP备09108050号-6 京公网安备 11010502049343号

^