Para quem não conhece o Reason (veja o reasonml) não é uma nova linguagem; É uma nova sintaxe e toolchain alimentado pela linguagem OCaml. Ele dá a OCaml uma sintaxe familiar voltada para programadores de JavaScript, e atende aos usuários de fluxo de trabalho NPM / Yarn já conhecidos.
Agora com a versão 3, uma das mudanças mais visíveis na sintaxe do Reason é o uso da sintaxe de aplicação/abstração JavaScript em vez de Ocaml. Isso significa que no Reason 3 você chamaria uma função de dois parâmetros, colocando parênteses em torno deles, como você faz em JavaScript:
myFunction(arg1, arg2) // novo, sintaxe C-like myFunction arg1 arg2 // antigo, sintaxe OCaml-like
Outras mudanças importantes são as seguintes:
- Nova sintaxe para declarar o tipo de um objeto em Javascript, usando {. }, ex.:
type payload = {. // Não precisa chamar o no need to call Js.t aqui "name": string, "age": int };
- Suporte ampliado para type punning com parâmetros marcados e nova sintaxe usando “~” em vez de “::”. É assim que você declara e chama uma função com o parâmetro marcados:
let addCoordinates = (~x, ~y) => { /* use x e y aqui */ }; ... addCoordinates(~x=5, ~y=6);
Compara a nova implementação com a antiga:
let addCoordinates x::x y::y => { /* use x e y aqui */ }; ... addCoordinates x::5 y::6;
Além disso, type punning (que, no exemplo acima, permite escrever ~x em vez do mais tedioso ~x como x) pode ser usado junto com tipos de anotações, que não haviam sido suportadas anteriormente:
let add = (~first: int, ~second: int) : int => first + second;
- Concatenação de String agora pode ser feito usando o operador “++” ao invés do “^”.
- Lógicas de negação agora será pelo operador “!” ao invés do “not”
Os desenvolvedores que possuem uma base de código Reason existente não devem se preocupar com a extensão das mudanças de sintaxe, que foram principalmente impulsionadas pela idéia de torná-lo mais “natural” para desenvolvedores de JavaScript. Na verdade, o Reason 3 vem com um script de migração que promete facilitar a transição.
Outra nova característica promissora do ecossistema Reason é a disponibilidade de uma API oficial para acesso programático ao Parser Reason, refmt, que já possui várias ferramentas como o Klipse, reason-tools, a documentação no site do Reason, etc.
fonte:
https://www.infoq.com/br/news/2017/12/facebook-releases-reason-3
https://www.infoq.com/news/2017/11/facebook-releases-reason-3