Paradigm | Функциональный |
---|---|
Разработал | Фил Фриман |
Впервые появился | 2013 |
Стабильная версия | 0.13.8 / 23 мая 2020 г.; 4 месяца назад (2020-05-23) |
Дисциплина ввода | Предполагаемая, статическая, сильная |
Лицензия | BSD |
Расширения имен файлов | .purs |
Веб-сайт | www.purescript.org |
Под влиянием | |
Haskell, JavaScript |
PureScript является строго типизированным, чисто функциональный язык программирования, который компилируется в JavaScript. Его можно использовать для разработки веб-приложений, серверных приложений, а также настольных приложений с использованием Electron. Его синтаксис в основном сопоставим с синтаксисом Haskell. Кроме того, он вводит полиморфизм строк и расширяемые записи. Кроме того, в отличие от Haskell, PureScript придерживается строгой стратегии оценки .
PureScript был первоначально разработан Филом Фриманом в 2013 году. Он начал работать над PureScript как различные попытки скомпилировать Haskell в JavaScript при сохранении его семантики (например, с использованием Fay, Haste или GHCJS) не сработал к его удовлетворению.
С тех пор он был подхвачен сообществом и разработан на GitHub. Дополнительные базовые инструменты, разработанные сообществом, включают специальный инструмент сборки «Pulp», каталог документации «Pursuit» и менеджер пакетов «Spago»
Возможности PureScript строгая оценка, постоянные структуры данных и вывод типа. Система типов PureScript имеет много общих функций с аналогичными функциональными языками, такими как Haskell : алгебраические типы данных и сопоставление с образцом, типы более высокого порядка, классы типов и функциональные зависимости и полиморфизм более высокого ранга. Система типов PureScript добавляет поддержку полиморфизма строк и расширяемых записей. Однако PureScript не поддерживает некоторые из более продвинутых функций Haskell, такие как семейства типов GADT и .
Компилятор PureScript пытается создать читаемый код JavaScript, где это возможно. Благодаря простому интерфейсу FFI он также позволяет повторно использовать существующий код JavaScript.
PureScript поддерживает инкрементную компиляцию, а дистрибутив компилятора включает поддержку создания плагинов для итеративного развитие. Плагины редактора существуют для многих популярных текстовых редакторов, в том числе Emacs, Sublime Text и Visual Studio Code.
PureScript поддерживает через свою функцию, в которой программа может быть построенный с пропущенными подвыражениями. Компилятор впоследствии попытается определить типы отсутствующих подвыражений и сообщить об этих типах пользователю. Эта функция вдохновила на аналогичную работу в GHC Haskell компиляторе
Вот минимальная программа "Hello world" в PureScript:
1 модуль Main, где 2 3 импортируют Effect.Console (log) 4 5 main = log "Hello World!"
Здесь тип программы определяется и проверяется компилятором PureScript. Более подробная версия той же программы может включать явные аннотации типов:
1 модуль Main, где 2 3 import Prelude 4 5 import Effect (Эффект) 6 import Effect.Console (log) 7 8 main :: Effect Unit 9 main = журнал "Hello World!"