Taken Seriously
![](https://s3.amazonaws.com/media-p.slid.es/uploads/486690/images/4437268/reaso_.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/486690/images/4666690/image.png)
/haskellcamargo
![](https://s3.amazonaws.com/media-p.slid.es/uploads/486690/images/4197237/call.png)
get /WHOAMI
P&D Researcher @ NG Informática
Core Developer @ Rung
- Gemidão Call
- Sclack
- Skype Unofficial Client
- Quack Programming Language
Author of
Working with
- Compilers Engineering
- Functional Programming
- OCaml
- Linters
- Virtual Machines
- Editor Tooling
get /WHOAMI
P&D Researcher @ NG Informática
![](https://s3.amazonaws.com/media-p.slid.es/uploads/486690/images/5285082/pasted-from-clipboard.png)
Core Developer @ Rung
- Gemidão Call
- Sclack
- Skype Unofficial Client
- Quack Programming Language
Author of
Working with
- Compilers Engineering
- Functional Programming
- OCaml
- Linters
- Virtual Machines
- Editor Tooling
what
is
reason?
A new syntax for OCaml
get /WHAT-is-Reason
get /WHAT-is-OCaml
A functional programming language
with foundations on λ-calculus
that is type-safe, extensible and modular
A new syntax for OCaml
get /WHAT-is-Reason
get /WHAT-is-OCaml
A functional programming language
with foundations on λ-calculus
that is type-safe, extensible and modular
made for web development
get /WHAT-is-Reason
made for javascript programmers
made FOR REACT
made for web development
get /WHAT-is-Reason
made for javascript programmers
made FOR REACT
made for web development
get /WHAT-is-Reason
made for javascript programmers
made FOR REACT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/486690/images/5376408/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/486690/images/5376419/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/486690/images/5376423/pasted-from-clipboard.png)
ReasonML
OCaml
JavaScript
![](https://s3.amazonaws.com/media-p.slid.es/uploads/486690/images/5376408/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/486690/images/5376419/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/486690/images/5376423/pasted-from-clipboard.png)
ReasonML
OCaml
JavaScript
![](https://s3.amazonaws.com/media-p.slid.es/uploads/486690/images/5376408/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/486690/images/5376419/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/486690/images/5376423/pasted-from-clipboard.png)
ReasonML
OCaml
JavaScript
WHY
A NEW
LANGUAGE?
![](https://s3.amazonaws.com/media-p.slid.es/uploads/486690/images/5376450/carbon_2_.png)
ECMAScript has some historical issues
And shares a lot of its semantics with OCaml
ocaml is safe
and catches bugs before YOUR QA
reason
has...
Cool error messages!
![](https://s3.amazonaws.com/media-p.slid.es/uploads/486690/images/4443559/cool.png)
type safety and inference
REACT
FOR
reason
yarn global add bs-platform
bsb -init counter -theme react
src/App.re
![](https://s3.amazonaws.com/media-p.slid.es/uploads/486690/images/5376465/carbon_3_.png)
src/Page.re
![](https://s3.amazonaws.com/media-p.slid.es/uploads/486690/images/5376469/carbon_4_.png)
Typed state
src/Page.re
![](https://s3.amazonaws.com/media-p.slid.es/uploads/486690/images/5376474/carbon_5_.png)
Typed actions
src/Page.re
![](https://s3.amazonaws.com/media-p.slid.es/uploads/486690/images/5376477/carbon_6_.png)
Component definition
src/Page.re
![](https://s3.amazonaws.com/media-p.slid.es/uploads/486690/images/5376479/carbon_7_.png)
Reducer
src/Page.re
![](https://s3.amazonaws.com/media-p.slid.es/uploads/486690/images/5376484/carbon_8_.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/486690/images/4443658/2017-12-13-134247_816x181_scrot.png)
Style it!
![](https://s3.amazonaws.com/media-p.slid.es/uploads/486690/images/5376492/carbon_9_.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/486690/images/5376495/carbon_10_.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/486690/images/4443690/2017-12-13-134757_693x227_scrot.png)
JAVASCRIPT
iNTEROP
![](https://s3.amazonaws.com/media-p.slid.es/uploads/486690/images/5376501/carbon_11_.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/486690/images/5376506/carbon_12_.png)
what
ABOUT
THE FUTURE?
/facebook/reason
![](https://s3.amazonaws.com/media-p.slid.es/uploads/486690/images/4666690/image.png)
thanks for your
ATTENTION
/haskellcamargo
![](https://s3.amazonaws.com/media-p.slid.es/uploads/486690/images/4666690/image.png)
marcelocamargo@linuxmail.org
ReactConf 2018 - ReasonML Taken Seriously
By Marcelo Camargo
ReactConf 2018 - ReasonML Taken Seriously
- 2,030