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