Hy
Hy is a dialect of the Lisp programming language. It is designed to interact with the language Python by translating expressions into Python's abstract syntax tree (AST).[2][3] Hy was introduced at Python Conference (PyCon) 2013 by Paul Tagliamonte.[4]
Hy logo - Cuddles the cuttlefish | |
Paradigm | Multi-paradigm: procedural, functional, object-oriented, meta, reflective, generic |
---|---|
Family | Lisp |
Designed by | Paul Tagliamonte |
Developers | Core team |
First appeared | 2013 |
Preview release | |
Scope | lexical, optionally dynamic |
Platform | IA-32, x86-64 |
OS | Cross-platform |
License | MIT-style |
Filename extensions | .hy |
Website | hylang |
Influenced by | |
Lisp, Kawa, Clojure, Common Lisp |
Similar to Kawa's and Clojure's mapping of s-expressions onto the Java virtual machine (JVM),[5] Hy is meant to operate as a transparent Lisp front end to Python's abstract syntax.[6] Lisp allows operating on code as data (metaprogramming). Thus, Hy can be used to write domain-specific languages.[7] Hy also allows Python libraries, including the standard library, to be imported and accessed alongside Hy code with a compiling[note 1] step converting the data structure of both into Python's AST.[note 2][8][9][10]
Example code
From the language documentation:[11]
=> (print "Hy!")
Hy!
=> (defn salutationsnm [name] (print (+ "Hy " name "!")))
=> (salutationsnm "YourName")
Hy YourName!
Notes
- "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.
References
- "Hy 0.19.0". GitHub.
- Jaworski, Michał; Ziadé, Tarek (2019). Expert Python programming (Third ed.). Birmingham, U.K.: Packt Publishing. p. 173. ISBN 978-1-78980-677-9. OCLC 1125343555.
- Danjou, Julien (2018). Serious Python: black-belt advice on deployment, scalability, testing, and more. San Francisco, CA: No Starch Press. pp. 145–149. ISBN 9781593278793. OCLC 1057729260.
- Tagliamonte, Paul (2 April 2013). PyCon lightning talk (Speech). Python Conference (PyCon). Santa Clara. Retrieved 2 September 2014.
- Turto, Tuukka (14 February 2014). "Programming Can Be Fun with Hy". Open Source For You. Retrieved 2 September 2014.
- Edge, Jake (30 April 2014). "Getting Hy on Python". LWN.net. Retrieved 2 September 2014.
- Tagliamonte, Paul (11 April 2014). Getting Hy on Python: How to implement a Lisp front-end to Python (Speech). PyCon. Montreal. Retrieved 2 September 2014.
- "Hy Documentation". hylang.org. Retrieved 3 September 2014.
- Danjou, Julien (26 March 2014). "The AST". The Hacker's Guide to Python. pp. 165–172.
- Kitchin, John (31 March 2016). "More on Hy and why I think it is a big deal". The Kitchin Research Group. Carnegie Mellon University. Retrieved 19 September 2018.
- "Quickstart". Hylang.org. 15 May 2018. Retrieved 19 September 2018.