LINUX.ORG.RU

[ФП][срач] Язык программирования Pure


2

4

Pure - динамически типизированный функциональный язык программирования с моделью исполнения, основанной на идее «term rewriting».

  • Синтаксис, бликий к Haskell (включая карринг, срезы, лямбды, сопоставление с образцом, list comprehensions и «as» patterns);
  • Поддерживает модель ленивости, основанную на продолжениях и заимствованную из Alice ML;
  • Допускает функции с побочными эффектами, опциональную аннотацию типов, интерфейсные типы
  • Поддержка рациональных, комплексных чисел, встроенный RegEx;
  • Содержит спектр встроенных структур данных, таких как: списки, туплы, векторы, матрицы и ленивые последовательности;
  • Интеграция с GSL;
  • Поддерживает полноценную систему гигиенических макросов;
  • Лёгкий FFI с сишными библиотеками;
  • Реализация под LLVM под GNU/Linux, Mac OS X, FreeBSD и Windows;
  • Из коробки поддержка компиляции в нативный код;
  • В комплекте идёт набор батареек для разнообразных нужд.

Про производительность заявляется следующее:

The Pure interpreter is able to achieve very good performance, offering execution speeds in the same ballpark as good Lisp interpreters. It seems to be one of the fastest implementations of term rewriting as a programming language right now, and is certainly good enough for most programming tasks except maybe the most demanding number crunching applications (and even these can be tackled by interfacing to Fortran or C).

Язык активно развивается, последняя версия документации датирована 8 января, автор постоянно пилит своё детище, активно идёт на контакт и охотно принимает и рассматривает любые предложения.

Ссылка на страницу проекта: http://code.google.com/p/pure-lang/
Ссылка на документацию (pdf): http://docs.pure-lang.googlecode.com/hg/puredoc.pdf
Ссылка на пример полной реализации АВЛ-деревьев: http://pure-lang.googlecode.com/hg/pure/examples/avltree.pure
Репозиторий (лицензия LGPLv3): hg clone https://code.google.com/p/pure-lang/

★★★★★

Кроме этого:

Поддерживает полноценную систему гигиенических макросов;

Есть плюсы перед хаскелем, а то не вижу, ткните что ль. Отнюдь не говорю что последний лучше, просто у него уже есть инфраструктура / библиотеки / комьюнити.

anonymous
()
Ответ на: комментарий от anonymous

Есть плюсы перед хаскелем, а то не вижу, ткните что ль.

Насколько я понял, основные отличия (не плюсы или минусы, а именно отличия) - это динамическая типизация и LLVM back-end.

mix_mix ★★★★★
() автор топика
Ответ на: комментарий от mix_mix

Я вот который день почитываю доку, и он мне вообще видится весьма продуманным и грамотным скрещиванием лиспа и хаскела.

mix_mix ★★★★★
() автор топика
Ответ на: комментарий от mix_mix

Насколько я понял, основные отличия (...)

Pure и Haskell — это практически каноничный пример того, что два языка с похожим синтаксисом крайне разнятся в семантике. Pure использует совсем другую стратегию вычислений и совсем другую систему типов. Совершенно другой язык, сравнивать их практически бессмысленно.

anonymous
()
Ответ на: комментарий от anonymous

In PURE, a call to gets always has the side effect of reading a line from the user. Thus, the expression line1 + line2 will be exactly the same as gets + gets, and also equivalent to line1 + line1. However, no actual calls to gets will be executed until at least some expression involving line1 or line2 is evaluated. The PURE compiler will evaluate any calls to gets in the order dictated by the evaluation of an expression, rather than by the order of definition of line1 and line2.

Вот такое вот pure, которое с side effects. Фи.

anonymous
()
Ответ на: комментарий от anonymous

Поддерживает полноценную систему гигиенических макросов;

Это следует читать как «нуждается в макросистеме», т.е., как недостаток, а не как достоинство.

Miguel ★★★★★
()
Ответ на: комментарий от Miguel

В макросистеме нуждается, по хорошему, каждый язык. Потому как без переписывания кода невозможно создавать eDSL-ы с существенно другой семантикой (не говорю уж про синтаксис). Да и никакая семантика, пусть даже самая супер-пупер-ленивая-и-чистая не спасает от boilerplate кода, а даже самые тупые макры, да что там, даже самый тупой препроцессор очень даже помогает.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.