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の公開である。Klipseやreason-tools、Reason docsサイトなど、多数のツールがすでにサポートしている。
Reasonは、JavaScript環境にOCamlの優れた型システムを導入するという、Facebookの試みである。BuckleScriptをコアに使用して、Ocamlの構文をやや煩雑だと感じているJavaScriptプログラマなどのための構文を提供する。
この記事を評価
- 編集者評
- 編集長アクション