Светлячный Dev Лог

Wed 01 October 2014

Hy — Lisp для Python

Tags: python, lisp

Нашел тут недавно такой интересный проект — Hy. Это такой лисп, который компилируется в абстрактное синтаксическое дерево (проще говоря, прямо в питон), и выполняется python интерпретатором.

Замечателен этот проект тем, что:

a) там, как и во многих лиспах, есть нормальные макросы;
б) у него полная интеграция с питоном.

Что это значит.

Макросы позволяют описывать абстракции и реализовывать DSL внутри lisp. Они могут более гибко работать с обрабатываемым кодом. Это не просто декоратор, которые позволяют функцию обернуть. Да и генерировать макросами можно не только функции, но и вообще произвольные блоки кода.

Интеграция с питоном просто отличная. Hy может использовать любые модули, функции и классы, которые уже есть в питоне, а все функции и классы, написанные на Hy, можно использовать в обычных питоновских модулях. Благодаря расширению sys.meta_path, модули написанные на Hy, можно импортировать в обычные питоновские простым import name_of_the_module.

Есть только один минус у всего этого — проект сыроват, и встречаются косяки. Но какие-то небольшие модули, где наличие макросов и кодогенерации дало бы значительные преимущества, можно пробовать писать. Всё что нужно, это pip install, да import hy.

Да, мне тут в #Hy канале на freenode, накидали ссылок на проектики, написанные на Hy:

Comments !