BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース FacebookがReason 3でReasonMLの構文を変更

FacebookがReason 3でReasonMLの構文を変更

ブックマーク

原文(投稿日:2017/11/10)へのリンク

OCamlの安全性と速度をJavaScriptに提供するためのFacebookの試みであるReadonがバージョン3に到達した。新たな構文の導入と、多数の修正が行なわれている。

構文上の最も顕著な変更は、JavaScriptのアプリケーション/アブストラクション構文が、Ocamlのものに代えて採用されていることだ。これによってReason 3では、JavaScriptと同じように、2つのパラメータの前後に括弧を付けて関数を呼び出せるようになる。

myFunction(arg1, arg2) // new, C-like syntax
myFunction arg1 arg2   // old, OCaml-like syntax

その他の注目すべき変更は以下のものだ。

  • {. }を使用してJavaScriptのオブジェクト型を宣言する新たな構文。例:

    type payload = {.  // no need to call Js.t here
      "name": string,
      "age": int
    };
    
  • ラベル付きパラメータを持つ型パンニング(punnung)の拡張サポートと、::に代えてを使用する新しい構文。ラベル付きパラメータを使用した関数宣言は次のように行なう。

    let addCoordinates = (∼x, ∼y) => {
      /* use x and y here */
    };
    ...
    addCoordinates(∼x=5, ∼y=6);
    

    以前の構文と比較してほしい。

    let addCoordinates x::x y::y => {
      /* use x and y here */
    };
    ...
    addCoordinates x::5 y::6;
    

    さらに型バンニング(上の例では∼x as xではなく、単に∼xと記述することができる)と、これまではサポートされていなかった型アノテーションとの併用が可能になった。

    let add = (∼first: int, ∼second: int) : int => first + second;
    
  • ^に代えて、++演算子による文字列の連結が可能になった。

  • 論理否定がnotから!になった。

Reasonコードベースをすでに持っている開発者は、構文の変更範囲を心配する必要はない。変更のほとんどが、JavaScript開発者にとってより“自然”に感じられるようにする、という考えに基づいているからだ。さらにReason 3には、移行を容易にするマイグレーションスクリプトも付属している。

Reasonエコシステムの期待するもうひとつの新機能が、Reasonパーザのrefntにプログラムからアクセスするための公式APIの公開である。Klipsereason-tools、Reason docsサイトなど、多数のツールがすでにサポートしている。

Reasonは、JavaScript環境にOCamlの優れた型システムを導入するという、Facebookの試みである。BuckleScriptをコアに使用して、Ocamlの構文をやや煩雑だと感じているJavaScriptプログラマなどのための構文を提供する。

この記事を評価

採用ステージ
スタイル

この記事に星をつける

おすすめ度
スタイル

BT