参考资料

  1. Apache Tomcat 是一个开源的 Java Servlet 容器和 Web 服务器
  2. FAST OS DOCKER 是一个轻量化的 Docker 管理工具
  3. Rapidoid是一个高性能的Java Web框架
  4. Drupal 是一个开源的内容管理系统 (CMS),用于构建网站
  5. Rocket.Chat 是一款开源的团队聊天平台
  6. Backdrop 是一个轻量级、高性能的反向代理工具
  7. GNU Compiler Collection (GCC) 是一个开源的编译器套件,支持多种编程语言
  8. 与虚拟机相比,Docker的优势是什么?

HyLang 简介

Hy(Hylang)是一种基于 Python 的 Lisp 方言,允许开发者使用 Lisp 语法编写代码,并编译为 Python 字节码运行。它兼容 Python 生态,可直接调用 Python 库。

特点

  1. Lisp 语法:支持括号表达式、宏等 Lisp 特性。

  2. 无缝 Python 互操作:可直接导入和使用 Python 模块。

  3. 动态编译:Hy 代码在运行时转换为 Python AST(抽象语法树)。

  4. 跨平台:支持 Windows、Linux、macOS。

  5. 宏系统:支持 Lisp 风格的宏编程。

最新更新内容及时间

  • 最新版本:0.28.0(截至 2024 年 3 月)

  • 更新内容

    • 改进 Python 3.11+ 兼容性

    • 优化宏展开性能

    • 修复 REPL 交互问题

镜像下载地址

官网地址

文档地址

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 文件设置教程

  1. 基本语法

    (print "Hello, Hy!")
    (defn greet [name] (print (+ "Hello, " name)))
    (greet "World")
  2. 导入 Python 模块

    (import math)
    (print (math.sqrt 16))
  3. 宏定义

    (defmacro infix [a op b] `(~op ~a ~b))
    (print (infix 1 + 2))  ; 输出 3

常见错误及解决方法

  1. SyntaxError(语法错误)

    • 检查括号是否匹配,例如 (print "Hello" 会报错,应为 (print "Hello")

  2. NameError(未定义变量)

    • 确保变量或函数已定义,例如:

      (defn foo [] (print x))  ; 若 x 未定义会报错
  3. Python 模块导入失败

    • 确保模块已安装,例如:

      pip install numpy
      (import numpy)  ; 需先安装
  4. 宏展开错误

    • 检查宏定义是否正确,例如:

      (defmacro bad-macro [] `(print x))  ; 缺少反引号或符号
  5. REPL 交互问题

    • 更新 Hy 版本或使用 hy --repl-output-fn=repr 避免输出格式问题。


以上为 HyLang 的完整信息,涵盖安装、配置、示例及常见问题。