8000 GitHub - qsqnk/mini-ml
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
This repository was archived by the owner on May 7, 2023. It is now read-only.

qsqnk/mini-ml

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mini-ml

Синтаксис

  • Константы: 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

Монадический интерпретатор

  • Поддержка всего того, что указано в синтаксисе
  • В случае успешной интерпретации возвращается список, состоящий из пар: имя переменной --- значение
  • В случае ошибки возвращается значение, содержащее тип ошибки

Тайпчекер

  • Вывод наиболее общего типа по системе Хиндли-Милнера
  • Проверка типов перед интерпретацией

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5

0