[ReasonML] Workshops code
/* list of strings */
let _ = ["example-1", "example-2", "example-3"]; /* Array of strings */
let _ = [|"example-1", "example-2", "example-3"|]; /* Stating the type of a Reason record */
type event = {
location: string,
years: list int
}; /* Making a Reason record */
{location: "Bratislava", years: [2017, 2018]}; /** Our first Reason function, already?
(Use ^ to join strings together) */
let rock song => Js.log ("We're all rocking to " ^ song); /* Manually specifying types */
/* Use {j| ... |j} to interpolate strings */
let rock (song: string) (times: int) :string =>
{j|Rocked out to $(song) $(string_of_int times) times|j}; rock "Nad Tatrou sa blýska" 1; /* Invoke our function! */ /* Function with labelled arguments */
let rockLabelled ::songName ::times =>
{j|Rocked out to $(song) $(string_of_int times) times|j}; rockLabelled songName::"Nad Tatrou sa blýska" times::1; /* Invoke our function with labelled arguments! */ /* Making a ReasonReact component */
MyComponent.make foo::bar children::[] () /* Making a ReasonReact component with JSX */
<MyComponent foo={bar} /> /* A variant animal type */
type animal =
| Dog
| Cat
| Bird; /* Pattern matching our custom animal variant type */
let feed pet =>
switch pet {
| Dog => "woof"
| Cat => "meow"
| Bird => "chirp"
}; /** Destructuring combines code flow and extracts values at the same time,
let's do it here with a list of strings */
let names = ["Daniel", "Jared", "Sean"]; switch names {
| [] => "No names!"
| [personOne] => "One person in list, named " ^ personOne
| [personOne, personTwo] => "Two people in list, both " ^ personOne ^ " and " ^ personTwo
| [personOne, _, personThree, ...rest] =>
"At least three people in the list, but we picked out " ^ personOne ^ " and " ^ personThree
}; /* Destructuring a record type */
type event = {
location: string,
years: list int
}; let event = {location: "Bratislava", years: [2017, 2018]}; let message = switch event {
| {location: "Bratislava", years} =>
"This event was in Bratislava for " ^ (string_of_int (List.length years))
| {location, years: [2018, 2019]} => "This event was in " ^ location ^ " for 2018 and 2019"
| event => "This is a generic event"
}; /* Binding to JavaScript libraries */
/* From https://github.com/reasonml-community/bs-moment/blob/master/src/MomentRe.re */ external alert : string => unit = "alert" [@@bs.val];
external imul : int => int => int = "Math.imul" [@@bs.val];
external reverse : array 'someKind => array 'someKind = "" [@@bs.send];
let identity: 'a => 'a => 'a = [%bs.raw {|function(x,y){/* Dangerous JavaScript! */ return x < y}|}]; alert "Bound successfully!";
imul 1 2;
reverse [|1, 2, 3|];
identity 1 2;
[ReasonML] Workshops code的更多相关文章
- 用code workshop取代code review
Box Tech Blog » Effective learning through code workshops介绍了Box如何用code workshop而不是code review的形式来改善代 ...
- CV code references
转:http://www.sigvc.org/bbs/thread-72-1-1.html 一.特征提取Feature Extraction: SIFT [1] [Demo program][SI ...
- [REASONML] Using Javascript npm package from REASON
For example, we want to use moment.js inside our ReasonML code. What we can do is create a module fi ...
- Visual Studio Code 代理设置
Visual Studio Code (简称 VS Code)是由微软研发的一款免费.开源的跨平台文本(代码)编辑器,在十多年的编程经历中,我使用过非常多的的代码编辑器(包括 IDE),例如 Fron ...
- 我们是怎么做Code Review的
前几天看了<Code Review 程序员的寄望与哀伤>,想到我们团队开展Code Review也有2年了,结果还算比较满意,有些经验应该可以和大家一起分享.探讨.我们为什么要推行Code ...
- Code Review 程序员的寄望与哀伤
一个程序员,他写完了代码,在测试环境通过了测试,然后他把它发布到了线上生产环境,但很快就发现在生产环境上出了问题,有潜在的 bug. 事后分析,是生产环境的一些微妙差异,使得这种 bug 场景在线下测 ...
- 从Script到Code Blocks、Code Behind到MVC、MVP、MVVM
刚过去的周五(3-14)例行地主持了技术会议,主题正好是<UI层的设计模式——从Script.Code Behind到MVC.MVP.MVVM>,是前一天晚上才定的,中午花了半小时准备了下 ...
- 在Visual Studio Code中配置GO开发环境
一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github ...
- 代码的坏味道(14)——重复代码(Duplicate Code)
坏味道--重复代码(Duplicate Code) 重复代码堪称为代码坏味道之首.消除重复代码总是有利无害的. 特征 两个代码片段看上去几乎一样. 问题原因 重复代码通常发生在多个程序员同时在同一程序 ...
随机推荐
- [NOIP2013提高组]货车运输
题目:洛谷P1967.Vijos P1843.codevs3287. 题目大意:有n个城市m条道路,每条道路有一个限重,规定货车运货不能超过限重.有一些询问,问你两个城市之间一次最多能运多少重的货(可 ...
- 05002_Linux的安装
1.虚拟机VMware workstation的安装 (1)下载链接:VMware workstation下载 密码:52wt: (2)双击VMware-workstation-full-10.0.2 ...
- vs2010和qt4.8.4配置
最近项目要求在vs中开发qt程序,安装过后发现代码每天提示功能.由于本人记忆力有限,特在网上收罗了些配置方法. vs安装目录采用默认,qt安装目录:C:\Qt\4.8.4vs 在系统环境变量新建QTD ...
- hadoop 2.5.1 、Hadoop 2.7 Hadoop 2.6
1 rpm 安装 yum install rpm 2 JDK安装 << 一定要先删除JDK!!!!!!>> rpm -qa | grep java ...
- arcgis engine 获取高亮Feature、element
转自原文 arcgis engine 获取高亮Feature.element IGraphicsContainer pGraphicsC = mainAxMapControl.Map as IGra ...
- OC07 -- 迭代器/NSNumber/NSValue/NSRange/NSSet/NSDate 及相互转换.(杂)
//一: 迭代器 //数组 NSArray *arr=@[@"1",@"2",@"3",@"4",@"5&qu ...
- mediawiki使用笔记
https://www.cnblogs.com/ToDoToTry/p/4475067.html
- 25.怎样在IDEA中使用JUnit4和JUnitGenerator V2.0自动生成测试模块
转自:https://blog.csdn.net/wangyj1992/article/details/78387728 因为项目的需要,所以研究了一下自动生成测试代码.将经验记录下来,总会有用的.我 ...
- 利用cvFindExtrinsicCameraParams2求取相机外参数
cvFindExtrinsicCameraParams2函数的定义: void cvFindExtrinsicCameraParams2( const CvMat* object_points, co ...
- SQL SERVER 新增表、新增字段、修改字段 判断表是否存在
// 新增之前判断表是否存在 IF NOT EXISTS (SELECT NAME FROM SYSOBJECTS WHERE ID = OBJECT_ID('tb_MessageHistory')) ...