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).[3][4] Hy was introduced at Python Conference (PyCon) 2013 by Paul Tagliamonte.[5] Lisp allows operating on code as data (metaprogramming), thus Hy can be used to write domain-specific languages.[6]
Paradigm | Multi-paradigm: procedural, functional, object-oriented, meta, reflective, generic |
---|---|
Family | Lisp |
Designed by | Paul Tagliamonte |
Developers | Core team |
First appeared | 2013 |
Stable release | 0.28.0[1]
/ 5 January 2024 |
Preview release | |
Scope | lexical, optionally dynamic[citation needed] |
Platform | IA-32, x86-64 |
OS | Cross-platform |
License | MIT-style |
Filename extensions | .hy |
Website | hylang |
Influenced by | |
Kawa, Clojure, Common Lisp |
Similar to Kawa's and Clojure's mappings onto the Java virtual machine (JVM),[7][8] Hy is meant to operate as a transparent Lisp front-end for Python.[9] 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][10][11][12]
From the language documentation:[13]
=> (print "Hy!")
Hy!
=> (defn salutationsnm [name] (print (+ "Hy " name "!")))
=> (salutationsnm "YourName")
Hy YourName!
1958 | 1960 | 1965 | 1970 | 1975 | 1980 | 1985 | 1990 | 1995 | 2000 | 2005 | 2010 | 2015 | 2020 | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
LISP 1, 1.5, LISP 2(abandoned) | |||||||||||||||
Maclisp | |||||||||||||||
Interlisp | |||||||||||||||
MDL | |||||||||||||||
Lisp Machine Lisp | |||||||||||||||
Scheme | R5RS | R6RS | R7RS small | ||||||||||||
NIL | |||||||||||||||
ZIL (Zork Implementation Language) | |||||||||||||||
Franz Lisp | |||||||||||||||
Common Lisp | ANSI standard | ||||||||||||||
Le Lisp | |||||||||||||||
MIT Scheme | |||||||||||||||
XLISP | |||||||||||||||
T | |||||||||||||||
Chez Scheme | |||||||||||||||
Emacs Lisp | |||||||||||||||
AutoLISP | |||||||||||||||
PicoLisp | |||||||||||||||
Gambit | |||||||||||||||
EuLisp | |||||||||||||||
ISLISP | |||||||||||||||
OpenLisp | |||||||||||||||
PLT Scheme | Racket | ||||||||||||||
newLISP | |||||||||||||||
GNU Guile | |||||||||||||||
Visual LISP | |||||||||||||||
Clojure | |||||||||||||||
Arc | |||||||||||||||
LFE | |||||||||||||||
Hy Chialisp |