皇上,还记得我吗?我就是1999年那个Linux伊甸园啊-----24小时滚动更新开源资讯,全年无休!

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

作者 Sergio De Simone,译者 谢丽

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。Klipsereason-tools、Reason 文档站点等工具都是基于该解析器的。

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

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

转自 http://www.infoq.com/cn/news/2017/11/facebook-releases-reason-3

分享到:更多 ()

评论 抢沙发