BT

你的观点很重要! 快来参与InfoQ调研吧!

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

| 作者 Sergio De Simone 关注 5 他的粉丝 ,译者 谢丽 关注 4 他的粉丝 发布于 2017年11月14日. 估计阅读时间: 3 分钟 | ArchSummit社交架构图谱:Facebook、Snapchat、Tumblr等背后的核心技术

A note to our readers: As per your request we have developed a set of features that allow you to reduce the noise, while not losing sight of anything that is important. Get email and web notifications by choosing the topics you are interested in.

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT