Парадигма | Мультипарадигмальный : функциональный , параллельный [2] |
---|---|
Разработано | Луи Пилфолд |
Разработчик | Луи Пилфолд |
Впервые появился | 13 июня 2016 г. ( 2016-06-13 ) |
Стабильный релиз | 1.7.0 [3] / 4 января 2025 г. |
Дисциплина набора текста | Типобезопасный , статический , выведенный [2] |
Управление памятью | Собранный мусор |
Язык реализации | Ржавчина |
ОС | FreeBSD , Linux , macOS , OpenBSD , Windows [4] |
Лицензия | Лицензия Apache 2.0 [5] |
Расширения имени файла | .блеск |
Веб-сайт | проблеск.бег |
Под влиянием | |
[6] |
Gleam — это универсальный , параллельный , функциональный язык программирования высокого уровня , который компилируется в исходный код Erlang или JavaScript . [2] [7] [8]
Gleam — это статически типизированный язык, [9] который отличается от самых популярных языков, работающих на виртуальной машине Erlang BEAM , Erlang и Elixir . Gleam имеет собственную типобезопасную реализацию OTP, фреймворка акторов Erlang. [10] Пакеты предоставляются с помощью менеджера пакетов Hex, и доступен индекс для поиска пакетов, написанных для Gleam. [11]
Первая пронумерованная версия Gleam была выпущена 15 апреля 2019 года. [12] Компиляция в JavaScript была введена в версии v0.16. [13]
В 2023 году Фонд экосистемы Эрланга профинансировал создание курса по изучению Gleam на обучающей платформе Exercism . [14]
Версия v1.0.0 была выпущена 4 марта 2024 года. [15]
Gleam включает в себя следующие функции, многие из которых схожи с другими языками функционального программирования: [8]
Пример «Привет, мир!» :
импортировать gleam/ioпаб фн мейн() { io.println("привет, мир!")}
Gleam поддерживает оптимизацию хвостового вызова : [16]
pub fn factorial(x: Int) -> Int { // Публичная функция вызывает частную хвостовую рекурсивную функцию факториальный_цикл(x, 1)}fn factorial_loop(x: Int, аккумулятор: Int) -> Int { случай х { 1 -> аккумулятор // Последнее, что делает эта функция, — вызывает саму себя _ -> factorial_loop(x - 1, аккумулятор * x) }}
Инструментарий Gleam реализован на языке программирования Rust . [17] Инструментарий представляет собой единый исполняемый файл, содержащий компилятор, инструмент сборки, менеджер пакетов, форматировщик исходного кода и языковой сервер . Также доступен двоичный файл WebAssembly , содержащий компилятор Gleam, что позволяет компилировать код Gleam в веб-браузере.