Hy(Hylang)是一种基于 Python 的 Lisp 方言,允许开发者使用 Lisp 语法编写代码
2025-05-16
2
参考资料
HyLang 简介
Hy(Hylang)是一种基于 Python 的 Lisp 方言,允许开发者使用 Lisp 语法编写代码,并编译为 Python 字节码运行。它兼容 Python 生态,可直接调用 Python 库。
特点
Lisp 语法:支持括号表达式、宏等 Lisp 特性。
无缝 Python 互操作:可直接导入和使用 Python 模块。
动态编译:Hy 代码在运行时转换为 Python AST(抽象语法树)。
跨平台:支持 Windows、Linux、macOS。
宏系统:支持 Lisp 风格的宏编程。
最新更新内容及时间
最新版本:0.28.0(截至 2024 年 3 月)
更新内容:
改进 Python 3.11+ 兼容性
优化宏展开性能
修复 REPL 交互问题
镜像下载地址
PyPI:
pip install hy
GitHub Releases:https://github.com/hylang/hy/releases
官网地址
文档地址
Docker 安装示例
# 拉取官方镜像 docker pull hylang/hy # 运行 REPL docker run -it hylang/hy # 运行 Hy 脚本 docker run -v $(pwd):/src -w /src hylang/hy your_script.hy
.hy
文件设置教程
基本语法:
(print "Hello, Hy!") (defn greet [name] (print (+ "Hello, " name))) (greet "World")
导入 Python 模块:
(import math) (print (math.sqrt 16))
宏定义:
(defmacro infix [a op b] `(~op ~a ~b)) (print (infix 1 + 2)) ; 输出 3
常见错误及解决方法
SyntaxError
(语法错误)检查括号是否匹配,例如
(print "Hello"
会报错,应为(print "Hello")
。NameError
(未定义变量)确保变量或函数已定义,例如:
(defn foo [] (print x)) ; 若 x 未定义会报错
Python 模块导入失败
确保模块已安装,例如:
pip install numpy
(import numpy) ; 需先安装
宏展开错误
检查宏定义是否正确,例如:
(defmacro bad-macro [] `(print x)) ; 缺少反引号或符号
REPL 交互问题
更新 Hy 版本或使用
hy --repl-output-fn=repr
避免输出格式问题。
以上为 HyLang 的完整信息,涵盖安装、配置、示例及常见问题。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。