Skip to content

Latest commit

 

History

History
87 lines (69 loc) · 4.78 KB

reasonML.md

File metadata and controls

87 lines (69 loc) · 4.78 KB

ReasonML

ReasonML - расширение синтаксиса для языка OCaml, разрабоатнного компанией Facebook. Синтаксис Reason похож на синтаксис языка JavaScript и транспилируется в язык OCaml. Данный язык обладает статической типизацией, но может быть скомпилирован с динамически типизированный JavaScript, используя компилятор BuckleScript. ReasonML хорошо интегрирован с JavaScript и OCaml экосистемой. ReasonML использует уже известный всем способ распространения через NPM/Yarn.

Особенности

  • Строгая типизация
  • Поддержка экосистемы NPM
  • Возможность комплияции в нативный код
  • ReaonReact для написания интерфейсов

Установка

Reason поставляется вместе со стандартным компилятором BuckleScript, который транспилирует код на Reason в JavaScript. Для установки BuckleScript необходимо установить либо npm либо yarn и выполнить одну из следующих команд.

yarn global add bs-platform
npm install -g bs-platform

Создание нового проекта

bsb -init my-new-project -theme basic-reason

Для компиляции и запуска проекта:

cd my-new-project
yarn build # or npm run build, for npm
node src/Demo.bs.js

Синтаксис

Особенность Пример Код на JS
Строка "Hello" "Hello"
Символ 'x' "x"
Целочисленный тип 23, -23 23, -23
Тип с плавающей точкой 23.0, -23.0 23.0, -23.0
Сложение integer 23 + 1 23 + 1
Сложение float 23.0 +. 1.0 23.0 + 1.0
Деление/умножение integer 2 / 23 * 1 2 / 23 * 1
Деление/умножение float 2.0 /. 23.0 *. 1.0 2.0 / 23.0 * 1.0
Возведение float в степень 2.0 ** 3.0 Math.pow(3, 4)
Конкатенация строк "Hello " ++ "World" "Hello " + "World"
Сравнение >, <, >=, <= >, <, >=, <=
Булевы операции !, &&, || !, &&, ||
Поверхностное и глубокое сравнение ===, == ===, ==
Список [1, 2, 3] [1, [2, [3, 0]]]
Добавление в список [a1, a2, ...theRest] [a1, [a2, theRest]]
Массив [|1, 2, 3|] [1, 2, 3]
Словарь type t = {b: int}; let a = {b: 10} var a = {b: 10}
Многострочный коммент /* Comment here */ Not in output
Однострочный коммент // Comment here Not in output

Создание переменных

Для задания переменных используется ключевое слово let. Переменные в Reason немутабельны. Но значения переменной можно изменить, если заново определить переменную с таким же именем.

let result1 = 10.;
let result2 = Js.Math.random() +. result1;
let result3 = Js.Math.floor_float(result2);

Типизация

При создании переменной ее тип определяется по значению, которое было ей присвоено.

let score = 10;

Но типы могут быть также указаны явно следующим образом.

let score: int = 10;

Ссылка на официальную документацию