|Paradigm||Multi-paradigm: procedural, functional, object-oriented, meta, reflective, generic|
|Designed by||Paul Tagliamonte|
0.27.0 / 7 July 2023
|Scope||lexical, optionally dynamic|
|Kawa, Clojure, Common Lisp|
Hy is a dialect of the Lisp programming language designed to interact with Python by translating s-expressions into Python's abstract syntax tree (AST). Hy was introduced at Python Conference (PyCon) 2013 by Paul Tagliamonte. Lisp allows operating on code as data (metaprogramming), thus Hy can be used to write domain-specific languages.
Similar to Kawa's and Clojure's mappings onto the Java virtual machine (JVM), Hy is meant to operate as a transparent Lisp front-end for Python. It allows Python libraries, including the standard library, to be imported and accessed alongside Hy code with a compiling[note 1] step where both languages are converted into Python's AST.[note 2]
From the language documentation:
=> (print "Hy!") Hy! => (defn salutationsnm [name] (print (+ "Hy " name "!"))) => (salutationsnm "YourName") Hy YourName!