- Константы:
42
,true
,"abc"
- Унарные операции:
not true
,-42
- Бинарные операции:
+
,-
,*
,/
,||
,&&
,=
,<>
,<
,<=
,>
,>=
- Создание списков:
1 :: [2; 3]
- Переменные:
some_var
- let-объявления:
let f x y ... = ...
,let rec f x y ... = ...
- Анонимные функции:
fun x y -> x + y
- Условный оператор:
if ... then ... else ...
- Аппликация:
f x
- Паттерн матчинг:
match x with ...
,function ...
,let x, y :: z = ...
- Списки:
hd :: tl
- Кортежи:
a, (_, b)
- Константы:
5
,"string"
,true
- Эффекты:
SomeEffect x
- Эффект-хэндлер:
effect (SomeEffect x) k
when
иas
не поддерживаются, так как легко заменяемые- Встроенные функции:
perform ...
,continue ...
- Создание новых эффектов:
effect E1: int
,effect E2: (int -> int) -> string
- Поддержка всего того, что указано в синтаксисе
- В случае успешной интерпретации возвращается список, состоящий из пар: имя переменной --- значение
- В случае ошибки возвращается значение, содержащее тип ошибки
- Вывод наиболее общего типа по системе Хиндли-Милнера
- Проверка типов перед интерпретацией