原文:http://2ality.com/2017/11/about-reasonml.html
翻译:ppp
系列文章目录详见: “什么是ReasonML?”
以下系列文章将简要的介绍Facebook的新型编程语言,ReasonML。
Background:
Core language:
Patterns and techniques:
ReasonML是由Facebook设计的一门基于对象的函数式编程语言。实质上,他是在OCaml这门编程语言基础上,创造的一门新的类C语法的语言。这种新的语法旨在实现与js互通以及让js开发者更容易上手。此外,也去除了一些OCaml独有的奇特的语法。ReasonML同时还支持了JSX(React所使用的一种将html模板内置于js的语法)
目前,ReasonML的默认编译对象就是js(包括浏览器中的和Node.js的)
ReasonML的代码看起来是这样的(代码截取自 ReasonML’s online playground)。
type tree = Leaf | Node(int, tree, tree);
let rec sum =
fun
| Leaf => 0
| Node(value, left, right) => value + sum(left) + sum(right);
let myTree =
Node(
1,
Node(2, Node(4, Leaf, Leaf), Node(6, Leaf, Leaf)),
Node(3, Node(5, Leaf, Leaf), Node(7, Leaf, Leaf))
);
sum(myTree) |> Js.log;
ReasonML继承自OCaml所带来的好处:
这门诞生于1996年的语言已经通过诸多项目证明了自己。Facebook自己也在许多项目(例如:Flow)中使用了它。
它的核心是一门有完善类型系统的函数式编程语言。同时也支持了面向对象和可变状态。
它可以被编译成二进制码、原生代码或js。
编译成js非常快。引用自 “Messenger.com Now 50% Converted to Reason”:
Full rebuild of the Reason part of the codebase is ~2s (a few hundreds of files), incremental build (the norm) is <100ms on average. The BuckleScript author estimates that the build system should scale to a few hundred thousands files in the current condition.
ReasonML的团队也致力于改善OCaml的生态系统:
如果你想从使用JavaScript编程转变为使用静态类型的函数式编程语言的话,RationalML是不错的选择。 但我对ReasonML中JSX的看法是:它有利有弊。
我很高兴RationalML没有重复造轮子,并严格基于OCaml。OCaml的实用性意味着你不会像从Haskell(一门纯函数程式语言)
扫码关注w3ctech微信公众号
共收到0条回复