[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) 重复代码堪称为代码坏味道之首.消除重复代码总是有利无害的. 特征 两个代码片段看上去几乎一样. 问题原因 重复代码通常发生在多个程序员同时在同一程序 ...
随机推荐
- C#版清晰易懂TCP通信原理解析(附demo)
[转] C#版清晰易懂TCP通信原理解析(附demo) (点击上方蓝字,可快速关注我们) 来源:周见智 cnblogs.com/xiaozhi_5638/p/4244797.html 对.NET中网络 ...
- 洛谷 P1443 马的遍历
P1443 马的遍历 题目描述 有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步 输入输出格式 输入格式: 一行四个数据,棋盘 ...
- 从头认识java-18.2 主要的线程机制(5)-守护线程与非守护线程
这一章节我们来讨论一下守护线程与非守护线程. 1.什么是守护线程?什么是非守护线程? 非守护线程:Java虚拟机在它全部非守护线程已经离开后自己主动离开. 守护线程:守护线程则是用来服务用户线程的,假 ...
- 用react native 做的一个推酷client
用react native 做的一个推酷client 仅供大家參考.仅仅为抛砖引玉.希望大家能以此来了解react.并编写出很多其它的优质的开源库,为程序猿做出贡献. 用的的组件: Navigator ...
- swift学习之数组
首先数组的定义:以有序的方式存储同样类型的值 (1)数组的简写(shorthand)语法 你能够通过Array<Element>,在这里,Element时数组存储元素的值的类型.也能够通过 ...
- linux内核计算时间差以及jiffies溢出
jiffies是每一个时钟中断,都会加1.这就导致一个问题.不管jiffies(一般来说是unsigned long类型)多少个字节,总有溢出的时候. 更极端的时候.当期jiffies是0xfffff ...
- Gitblit从一个服务器,迁移到另外一个服务器
http://gitblit.com/federation.html A Gitblit federation is a mechanism to clone repositories and kee ...
- 关于vue中的语法糖v-model
开发src-在线系统的过程中,封装了很多组件,如Dialog prompt等,在开源项目的组件中这些组件使用v-model来控制显示,我来总结一下关于自己学习到的v-model知识 1. 使用prop ...
- 记录一下 mysql 的查询中like字段的用法
SELECT * from t_yymp_auth_role where role_name not like '%测试%' and role_name not like '%部门%' and rol ...
- Spatial Pyramid Matching
转自:http://blog.csdn.net/jwh_bupt/article/details/9625469 SPM 全称是Spatial Pyramid Matching,出现的背景是bag o ...