Hy
Hy(またはHylang)は、式をPythonのAST(抽象構文木)へ変換することで、PythonとLisp間でのやり取りができるように設計されたプログラミング言語Lispの方言のひとつである。HyはPython Conference(PyCon)2013でPaul Tagliamonteが発表した[2]。
Hy logo - Cuddles the cuttlefish | |
パラダイム | Multi-paradigm: procedural, functional, object-oriented, meta, reflective, generic |
---|---|
登場時期 | 2013年 |
設計者 | Paul Tagliamonte |
最新リリース | 0.26.0 / 2023年2月8日[1] |
評価版リリース | 0.17.0 / 2019年5月20日 |
影響を受けた言語 | Lisp, Kawa, Clojure, Common Lisp |
プラットフォーム | Cross-platform |
ライセンス | MIT-style |
ウェブサイト |
hylang |
拡張子 | .hy |
関連言語 | Lisp |
KawaやClojureにおいて、S式がJava仮想マシン(JVM)の抽象構文木にマッピングされるのと同様に[3]、Hyは、Pythonの抽象構文に対する透過的なLispフロントエンドとして使用することが想定されている[4]。Lispではコード自体をデータとして操作することが可能である(メタプログラミング)ため、Hyをドメイン固有言語(DSL)として使用することができる[5]。Hyのコードは、コンパイル[note 1]時に両言語のコードをPythonのASTにステップ変換するため、標準ライブラリを含むPythonのライブラリにインポートしたり、ライブラリからHyのコードにアクセスしたりすることが可能である[note 2][6][7][8]。
コード例
以下はHy言語のドキュメントからの引用である[9]。
=> (print "Hy!")
Hy!
=> (defn salutationsnm [name] (print (+ "Hy " name "!")))
=> (salutationsnm "YourName")
Hy YourName!
出典
- "Compiled" is a term which may apply to expressing Hy code in Python's AST or converting that AST into bytecode, the latter being dependent on the specific Python interpreter used and not Hy.
- Hy is tested on Python 2.7, 3.4 through 3.6, and PyPy.
参考文献
- 出典URL: https://github.com/hylang/hy/releases/tag/0.26.0, 閲覧日: 2023年2月15日, 題名: Release 0.26.0, 出版日: 2023年2月8日
- Tagliamonte, Paul (2 April 2013). PyCon lightning talk (Speech). Python Conference (PyCon). Santa Clara. 2014年9月2日閲覧。
- Turto, Tuukka (2014年2月14日). “Programming Can Be Fun with Hy”. Open Source For You 2014年9月2日閲覧。
- Edge (2014年4月30日). “Getting Hy on Python”. LWN.net. 2014年9月2日閲覧。
- (Speech).
|title=
は必須です。 (説明) - “Hy Documentation”. hylang.org. 2014年9月3日閲覧。
- Danjou, Julien (26 March 2014). “The AST”. The Hacker's Guide to Python. pp. 165–172
- Kitchin (2016年3月31日). “More on Hy and why I think it is a big deal”. The Kitchin Research Group. Carnegie Mellon University. 2018年9月19日閲覧。
- “Quickstart”. Hylang.org (2018年5月15日). 2018年9月19日閲覧。
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.