Hy语言

Hy
编程范型多范型: 过程式, 函数式, 面向对象, 元编程, 反射式, 泛型
语言家族Lisp
設計者Paul Tagliamonte
實作者核心团队
发行时间2013年,​11年前​(2013
当前版本
  • 0.29.0 (2024年5月20日;穩定版本)[1]
編輯維基數據鏈接
作用域词法
實作語言Python
系统平台IA-32, x86-64
操作系统跨平台
許可證MIT式
文件扩展名.hy
網站hylang.org
啟發語言
Kawa英语Kawa (Scheme implementation), Clojure, Common Lisp

HyLisp编程语言的一种方言。它设计用于同Python语言进行交互,方式是把表达式翻译成Python的抽象语法树(AST)[2][3]。Paul Tagliamonte在2013年于Python会议(PyCon)介绍了Hy[4]

类似于Kawa英语Kawa (Scheme implementation)Clojures-表达式映射到Java虚拟机(JVM)之上[5],Hy必定作为Python抽象语法树的透明Lisp前端来运行[6]。Lisp允许像数据那样在代码上进行操作(元编程)。因此,Hy可以用来书写领域特定语言[7]。Hy还允许导入Python包括标准库,并与Hy代码一起被访问,方式是通过一个编译步骤[note 1],将二者的数据结构翻译成Python的AST[note 2][8][9][10]

例子代码

来自语言文档的例子[11]

=> (print "Hy!")
Hy!
=> (defn salutationsnm [name] (print (+ "Hy " name "!")))
=> (salutationsnm "YourName")
Hy YourName!

参见

Hy标志和吉祥物墨鱼Cuddles
  • Common Lisp
  • Clojure
  • Kawa (Scheme实现)英语Kawa (Scheme implementation)
  • CLPython英语CLPython
  • Hissp[12] - Hissp是编译成Python的函数式子集的模块化Lisp实现,提供可以完全访问Python生态系统的语法宏元编程。
  • SchemePy[13] - 用Python实现的Scheme,支持call/cc英语call-with-current-continuation干净宏

注释

  1. ^ “编译”这个术语可以应用于将Hy代码表达为Python的AST或将这个AST转换成字节码,后者依赖于所使用的特定Python解释器而非Hy。
  2. ^ Hy在Python 2.7、3.4到3.6和PyPy上测试过。

引用

  1. ^ 1.0 1.1 Release 0.29.0. 2024年5月20日 [2024年5月23日]. 
  2. ^ Jaworski, Michał; Ziadé, Tarek. Expert Python programming Third. Birmingham, U.K.: Packt Publishing. 2019: 173. ISBN 978-1-78980-677-9. OCLC 1125343555. 
  3. ^ Danjou, Julien. Serious Python: black-belt advice on deployment, scalability, testing, and more. San Francisco, CA: No Starch Press. 2018: 145–149. ISBN 9781593278793. OCLC 1057729260. 
  4. ^ Tagliamonte, Paul. PyCon lightning talk (演讲). Python Conference (PyCon). Santa Clara. 2 April 2013 [2 September 2014]. (原始内容存档于2020-10-19). 
  5. ^ Turto, Tuukka. Programming Can Be Fun with Hy. Open Source For You. 14 February 2014 [2 September 2014]. (原始内容存档于2020-08-03). 
  6. ^ Edge, Jake. Getting Hy on Python. LWN.net. 30 April 2014 [2 September 2014]. (原始内容存档于2020-10-12). 
  7. ^ Tagliamonte, Paul. Getting Hy on Python: How to implement a Lisp front-end to Python (演讲). PyCon. Montreal. 11 April 2014 [2 September 2014]. (原始内容存档于2020-10-20). 
  8. ^ Hy Documentation. hylang.org. [3 September 2014]. (原始内容存档于2020-11-25). 
  9. ^ Danjou, Julien. The AST. The Hacker's Guide to Python. 26 March 2014: 165–172. 
  10. ^ Kitchin, John. More on Hy and why I think it is a big deal. The Kitchin Research Group. Carnegie Mellon University. 31 March 2016 [19 September 2018]. (原始内容存档于2020-02-17). 
  11. ^ Quickstart. Hylang.org. 15 May 2018 [19 September 2018]. (原始内容存档于2019-08-14). 
  12. ^ Hissp. [2020-10-09]. (原始内容存档于2020-09-20). 
  13. ^ SchemePy. [2020-10-10]. (原始内容存档于2018-07-09). 

外部链接

  • 官方网站
  • GitHub上的hy頁面
  • 文档
特征
 
对象系统
  • Common Lisp对象系统(CLOS)
  • CommonLoops英语CommonLoops
  • Flavors英语Flavors (programming language)
实现英语Programming language implementation
Common
Lisp
  • Allegro Common Lisp英语Allegro Common Lisp
  • Armed Bear Common Lisp英语Armed Bear Common Lisp(ABCL)
  • CLISP
  • Clozure CL
  • CMU Common Lisp(CMUCL)
  • Corman Common Lisp英语Corman Common Lisp
  • Embeddable Common Lisp(ECL)
  • GNU Common Lisp(GCL)
  • LispWorks英语LispWorks
  • Macintosh Common Lisp英语Macintosh Common Lisp
  • Mocl英语Mocl
  • Poplog英语Poplog
  • Steel Bank Common Lisp(SBCL)
  • Symbolics Common Lisp英语Genera (operating system)
  • Bigloo英语Bigloo
  • Chez Scheme
  • Chicken
  • Gambit
  • Gauche英语Gauche (Scheme implementation)
  • GNU Guile
  • Ikarus英语Ikarus (Scheme implementation)
  • IronScheme英语IronScheme
  • JScheme
  • Kawa英语Kawa (Scheme implementation)
  • Larceny
  • MIT/GNU Scheme
  • Racket
  • RScheme英语RScheme
  • Scheme 48
  • SCM
  • SIOD
  • STklos英语STklos
  • TinyScheme
  • Ypsilon英语Ypsilon (Scheme implementation)
  • OpenLisp英语OpenLisp
  • Easy-ISLisp
未标准化
 
  • Arc
  • AutoLISP
  • BBN LISP
  • Clojure
  • Dylan
  • Emacs Lisp
  • EuLisp英语EuLisp
  • Franz Lisp
  • GOAL英语Game Oriented Assembly Lisp
  • Hy
  • Interlisp英语Interlisp
  • 知识工程环境英语Knowledge Engineering Environment
  • LispKit
  • *Lisp英语*Lisp
  • Le Lisp
  • LFE英语LFE (programming language)
  • Lisp Machine Lisp英语Lisp Machine Lisp
  • Maclisp
  • MDL英语MDL (programming language)
  • MLisp英语MLisp
  • MultiLisp英语MultiLisp
  • newLISP
  • NIL英语NIL (programming language)
  • PC-LISP英语PC-LISP
  • PicoLisp
  • Portable Standard Lisp英语Portable Standard Lisp
  • RPL英语RPL (programming language)
  • S-1 Lisp英语S-1 Lisp
  • SKILL
  • Spice Lisp英语Spice Lisp
  • T英语T (programming language)
  • Zetalisp英语Zetalisp
Logo
  • MSWLogo英语MSWLogo
  • NetLogo
  • StarLogo英语StarLogo
  • UCBLogo英语UCBLogo
  • Common Lisp界面管理器英语Common Lisp Interface Manager
  • McCLIM英语McCLIM
  • Genera英语Genera (operating system)
  • Scsh英语Scsh
  • Lisp机器
  • TI Explorer英语TI Explorer
  • Space-cadet键盘英语Space-cadet keyboard
实践
社群
技术标准
  • Scheme实现要求英语Scheme Requests for Implementation
  • Common Lisp HyperSpec英语Common Lisp HyperSpec
  • X3J13英语X3J13
教育
图书
教程
  • ProgramByDesign英语ProgramByDesign
组织
商业
  • 苹果公司
  • BBN
  • Harlequin英语Harlequin (software company)
  • Lucid Inc.英语Lucid Inc.
  • Symbolics英语Symbolics
  • Xanalys英语Xanalys
教育
人士
 
Common
Lisp
  • Scott Fahlman英语Scott Fahlman
  • Richard P. Gabriel英语Richard P. Gabriel
  • Philip Greenspun英语Philip Greenspun
  • David A. Moon英语David A. Moon
  • Kent Pitman英语Kent Pitman
  • Guy L. Steele Jr.
  • Daniel Weinreb英语Daniel Weinreb
Logo
  • 分类 语言
  • 分类 家族
  • 列表级条目 列表英语List of Lisp-family programming languages