首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ReasonML 先睹为快

Reason对于大多数前端开发人员可能相对比较陌生。所以在开始之前有必要介绍一下 Reason是什么。为什么要使用 Reason。

Reason 是什么?

Reason并不是一门新的语言,而是一种语法和链工具,使用 BuckleScript 将 OCaml 编译成 js。Reason 和 ReasonReact 由 Facebook ReactJs 的开发组开发和维护的。

为什么选择 Reason

Reason是基于 OCaml 而来,语法上对前端开发者(js使用者)更为友好。

1) Reason 支持 mutable 逻辑和数据结构

2) 由于是强类型语言,因此对浏览器的JIT编译(如运行时推导类型)友好,提升运行时性能

3) BuckleScript 并不是像其他编译简单地将某种语言编译为 js,而是对函数式编程做了很多优化

4) BuckleScript 的编译速度非常快

我们通过官网提供 try 来体验一下 Reason

当打开 try 我们可以看到一个界面

左上为 Reason 代码,我们在这里写 reason 代码

右上为 Reason 编译后的 javascript 代码

左下为 Ocaml 代码

右下为输出

定义数据类型 animal 接受 Cat 和 Dog 类型

定义一个 speak 方法接受 animal 类型作为参数,speak 方法会根据传入 animal 类型(Cat 或 Dog)不同做不同操作。这里用 Js.log 打印。

这里通过 ++ 连接变量和字符串,我们将 name 添加到输出。

我们也可以对 Cat("anotherCat"),确定了 name 的 Cat 进行确定操作,如上图。但是注意到在左下有提示。

要去掉 warn ,我需要调整一下顺序,将确定 name Cat("anthorCat“) 放在 Cat(name)上面,之所以这样做应该不难理解。好的高级语言是让程序员 enjoy coding

我们现在用 Reason 实现组合函数,也就是通过一个函数包裹另一个函数来决定函数执行顺序。注释中会先执行 g(x) 执行的结果作为 f 函数的参数。Reason 让组合函数定义变得有趣且合理看一看 code 吧。定义函数 (

执行结果如下图

也可以定义一个 f 函数接受(

通过调整函数顺序来调整执行顺序。

也可以简化为 f1 = inc

也可以链式执行一系列函数,是不是很酷。

今天到这里吧。感谢大家关注。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180220G02YIS00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券