Hy – Lisp as an AltPython
概要
Hy言語は、Pythonの代替言語のひとつです。
文法はLisp式で、Lispの方言になります。
Pythonの抽象構文木にコードが変換されます。
ですので、Javaに対するKotlinなどの位置づけに等しいです。
TypeScriptやScssのような、元言語そのものへのトランスパイルは行いません。
Pythonとの連携が容易で、相互運用が簡単にできます。
Pythonでの開発をサポートする第二言語として、最適といえます。
用法
Pythonのモジュール開発をしたいが、
Lispの文法を使ったほうが簡単にかけるときに使います。
例えば、複雑なラムダ式(無名関数)を使いたい時、
Pythonでは無理でも、Hyならできます。
環境設定
- Pythonの環境がインストールされていることを確認
pip install git+https://github.com/hylang/hy.git
- コマンドラインで
hy
コマンドを打って、シェル環境を呼び出し
開発支援環境構築
- VSCodeがインストールされていることを確認
- 拡張機能で、vscode-hyをインストール
サンプルコード(tutorial.hy)
(print (* (+ 3 4) 5))
実行
コマンド(windows)
hy ./tutorial.hy
期待される表示
35
動画
Pythonとの相互運用
hy言語は、Pythonとの相互運用も可能です。
Pythonのモジュールを読み込む
Python側
def concat(values : list):
return "".join([str(value) for value in values])
Hy側
(import [python_for_sample_hy [concat]])
(print (concat [1 3 4]))
実行動画
Pythonにモジュールを輸出する
Hy側(hy_for_sample_python.hy)
(defn data [obj]
(defn process [process_content]
(process_content obj)
)
(return process)
)
Python側(sample.py)
import hy
from hy_for_sample_python import data
if __name__ == "__main__":
data([1,2,3])(print)