参考资料

  1. docker镜像源配置详细说明以及案例
  2. 如何管理多个docker容器?
  3. Ubuntu 是基于 Debian 的开源 Linux 发行版
  4. PyPy 是一个 Python 解释器的替代实现,使用 RPython(受限 Python)编写
  5. Rust 是一种系统编程语言,专注于安全、并发和性能
  6. Wiki 是一个基于 Web 的协作式知识管理系统
  7. PostgreSQL 是一个开源的关系型数据库管理系统
  8. ERPNext 14 是一款开源的企业资源规划(ERP)系统

Clojure 是一种运行在 JVM 上的 Lisp 方言

Clojure 简介

Clojure 是一种运行在 JVM 上的 Lisp 方言,由 Rich Hickey 于 2007 年创建。它是一种函数式编程语言,强调不可变数据和并发编程。

主要特点

  • 动态类型系统

  • 函数式编程范式

  • 不可变数据结构

  • 与 Java 互操作性强

  • 强大的宏系统

  • 并发编程支持

  • REPL 开发环境

最新更新内容及时间

Clojure 1.11.1 (2022年4月发布)

  • 新增 parse-longparse-double 函数

  • 改进错误信息

  • 性能优化

镜像下载地址

https://clojure.org/guides/getting_started

官网地址

https://clojure.org/

文档地址

Docker 安装示例

# 使用官方 Clojure 镜像
docker run -it clojure

# 创建新项目
docker run -it --rm -v "$PWD":/usr/src/app -w /usr/src/app clojure lein new app myapp

.yarn 设置教程

Clojure 通常使用 Leiningen 或 deps.edn 作为构建工具,不常用 Yarn。以下是 deps.edn 配置示例:

{:deps {org.clojure/clojure {:mvn/version "1.11.1"}
        ring/ring-core {:mvn/version "1.9.5"}}
 :paths ["src"]}

常见错误问题

  1. ClassNotFoundException

    • 原因: 依赖未正确加载

    • 解决: 检查 deps.edn 或 project.clj 中的依赖声明

  2. NullPointerException

    • 原因: 尝试在 nil 上调用方法

    • 解决: 使用 some->when 进行 nil 检查

  3. ArityException

    • 原因: 函数调用参数数量不匹配

    • 解决: 检查函数定义和调用处的参数数量

  4. REPL 不响应

    • 原因: 长时间运行的计算阻塞 REPL

    • 解决: 使用 future 或增加 JVM 堆大小

  5. Java 互操作问题

    • 原因: 不正确的 Java 方法调用

    • 解决: 确保使用正确的语法: (.methodName object args)