<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Clojure 专题导航：从函数式编程到企业级 Web 与并发实战 on PlumePHP</title><link>https://plumephp.com/posts/clojure/</link><description>Recent content in Clojure 专题导航：从函数式编程到企业级 Web 与并发实战 on PlumePHP</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Wed, 22 Oct 2025 10:06:00 +0800</lastBuildDate><atom:link href="https://plumephp.com/posts/clojure/index.xml" rel="self" type="application/rss+xml"/><item><title>Clojure 并发设计模式：STM、core.async 与 Agent 实战</title><link>https://plumephp.com/clojure-concurrency-patterns/</link><pubDate>Wed, 22 Oct 2025 10:06:00 +0800</pubDate><guid>https://plumephp.com/clojure-concurrency-patterns/</guid><description>&lt;p&gt;Clojure 的并发设计哲学是「分离身份（Identity）与状态（State）」，通过不可变数据结构和专用并发原语，让多线程编程回归简单。与 Java 的锁（synchronized/ReentrantLock）和 Erlang 的 Actor 消息传递不同，Clojure 提供了三种互补的并发模型——&lt;strong&gt;STM（软件事务内存）、Agent 和 core.async（CSP 通道）&lt;/strong&gt;，满足从协调式状态修改到流式异步管道的各类场景。&lt;/p&gt;</description></item><item><title>Clojure 现代 Web 全栈开发：Ring、reitit 与数据库集成</title><link>https://plumephp.com/clojure-modern-web-stack/</link><pubDate>Wed, 22 Oct 2025 10:05:00 +0800</pubDate><guid>https://plumephp.com/clojure-modern-web-stack/</guid><description>&lt;p&gt;Clojure 在 Web 开发领域有着独特的优势：不可变数据结构天然适合表示 HTTP 请求/响应，纯函数编写 handler 使得逻辑清晰易测，JVM 生态则提供了成熟的数据库连接池和 HTTP 服务器。本文将系统性地构建一个完整的 Clojure Web 应用，从 Ring 基础架构到现代路由库 reitit，再到数据库集成与监控，覆盖现代 RESTful 服务开发的完整链路。&lt;/p&gt;</description></item><item><title>Clojure spec 与测试：数据验证、生成测试与属性驱动</title><link>https://plumephp.com/clojure-clojure-spec/</link><pubDate>Wed, 22 Oct 2025 10:04:00 +0800</pubDate><guid>https://plumephp.com/clojure-clojure-spec/</guid><description>&lt;p&gt;在动态类型的 Clojure 世界中，确保数据的形状正确是一个核心工程挑战。&lt;code&gt;clojure.spec&lt;/code&gt; 是 Clojure 官方于 1.9 版本引入的数据描述与验证库，它不仅可以进行运行时的结构检查，还能为属性驱动测试（Property-Based Testing）自动生成海量测试数据。本文将深入 spec 的完整功能谱系，从基础验证到高级生成器定制，并通过实战展示如何用 spec 守护生产系统的数据边界。&lt;/p&gt;</description></item><item><title>Clojure 工具链演进：Leiningen、Clojure CLI 与 deps.edn</title><link>https://plumephp.com/clojure-tools-deps/</link><pubDate>Wed, 22 Oct 2025 10:03:00 +0800</pubDate><guid>https://plumephp.com/clojure-tools-deps/</guid><description>&lt;p&gt;Clojure 自 2007 年诞生以来，其工具链经历了从 Leiningen 一统天下到 Clojure CLI（tools.deps）双轨并行的长期演进。理解这两种主流工具的差异与选型原则，是每位 Clojure 开发者必须掌握的基础技能。本文将深入对比两者的项目结构、依赖管理、构建生命周期及 IDE 集成，帮助你选择最适合团队场景的工具链。&lt;/p&gt;</description></item><item><title>Clojure 调用 Java 深度实践：从 JVM 互操作到性能优化</title><link>https://plumephp.com/clojure-java-interop/</link><pubDate>Wed, 22 Oct 2025 10:02:00 +0800</pubDate><guid>https://plumephp.com/clojure-java-interop/</guid><description>&lt;p&gt;Clojure 诞生于 JVM 之上，这意味着它并非与 Java 割裂的孤岛，而是能无缝复用整个 Java 生态的桥梁。从 JDK 标准库到 Spring、Hadoop、Netty 等成熟框架，Clojure 通过简洁的语法糖封装了 Java 的底层互操作细节。本文将从基础调用到生产级性能优化，全面梳理 Clojure-Java 互操作的工程实践。&lt;/p&gt;</description></item><item><title>Clojure 多方法与协议：灵活的多态设计与实现</title><link>https://plumephp.com/clojure-multimethods-protocols/</link><pubDate>Wed, 22 Oct 2025 10:01:00 +0800</pubDate><guid>https://plumephp.com/clojure-multimethods-protocols/</guid><description>&lt;p&gt;Clojure 摒弃了传统面向对象语言（如 Java、C++）中基于类继承的静态多态模型，转而采用更加灵活的 &lt;strong&gt;ad-hoc 多态&lt;/strong&gt;机制。通过**多方法（Multimethod）&lt;strong&gt;和&lt;/strong&gt;协议（Protocol）**两大支柱，开发者可以在不修改原有代码的情况下为任意类型添加新行为，实现真正的「开闭原则」。&lt;/p&gt;</description></item><item><title>Clojure 宏编程深度解析：从 quote/unquote 到 DSL 构建</title><link>https://plumephp.com/clojure-macro-programming/</link><pubDate>Wed, 22 Oct 2025 10:00:00 +0800</pubDate><guid>https://plumephp.com/clojure-macro-programming/</guid><description>&lt;p&gt;&lt;strong&gt;宏（Macro）是 Clojure 最强大的语言特性之一&lt;/strong&gt;，它允许你在编译期操作代码本身，将「代码即数据」这一 Lisp 哲学推向极致。与函数只能在运行期处理数据不同，宏在编译期接收代码片段（S-表达式），生成新的代码片段后交给编译器执行。这种能力使开发者能够扩展语言语法、消除重复代码、甚至构建全新的领域特定语言（DSL）。&lt;/p&gt;</description></item><item><title>Learn Clojure by Examples</title><link>https://plumephp.com/learn-clojure-by-examples/</link><pubDate>Sat, 31 Aug 2024 11:14:40 +0800</pubDate><guid>https://plumephp.com/learn-clojure-by-examples/</guid><description>&lt;blockquote&gt;
&lt;p&gt;本文是面向有编程基础读者的 Clojure 系统性教程。假设你已经熟悉至少一门主流编程语言（推荐先阅读 /java-kuai-ru-men-cheng/ 或 /python-ru-men-cheng/ 作为前置知识），我们将通过大量可运行的 REPL 示例带你深入函数式编程的 Lisp 世界。&lt;/p&gt;</description></item><item><title>Clojure数据操作</title><link>https://plumephp.com/clojure-data-operations/</link><pubDate>Mon, 05 Aug 2024 20:58:53 +0800</pubDate><guid>https://plumephp.com/clojure-data-operations/</guid><description>&lt;p&gt;Clojure 是一个为函数式编程设计的 Lisp 方言，它提供了丰富的序列操作来处理数据集合，特别是对于大量数据的处理。以下是一些基本的序列操作方法和技巧：&lt;/p&gt;
&lt;h3 id="1-懒加载序列lazy-sequences"&gt;1. 懒加载序列（Lazy Sequences）&lt;/h3&gt;
&lt;p&gt;Clojure 的序列操作是懒加载的，这意味着它们不会立即计算序列中的所有元素，而是按需计算。&lt;/p&gt;</description></item><item><title>Clojure基础语法</title><link>https://plumephp.com/clojure-basic-syntax/</link><pubDate>Mon, 05 Aug 2024 20:11:23 +0800</pubDate><guid>https://plumephp.com/clojure-basic-syntax/</guid><description>&lt;p&gt;Clojure 是一个运行在 Java 虚拟机上的 Lisp 方言，以其简洁而富有表现力的语法而闻名。下面是一些 Clojure 的基础语法介绍，包括代码示例及解释：&lt;/p&gt;
&lt;h3 id="1-程序结构和命名空间namespace"&gt;1. 程序结构和命名空间（Namespace）&lt;/h3&gt;
&lt;p&gt;Clojure 程序通常以 &lt;code&gt;ns&lt;/code&gt; 特殊形式开始，用于定义命名空间，类似于其他语言的 package 或 module。命名空间允许你组织代码和避免命名冲突。&lt;/p&gt;</description></item><item><title>Clojure学习计划</title><link>https://plumephp.com/clojure-learning-plan/</link><pubDate>Fri, 26 Jul 2024 11:58:24 +0800</pubDate><guid>https://plumephp.com/clojure-learning-plan/</guid><description>&lt;p&gt;学习Clojure语言是一个既有趣又具有挑战性的过程。Clojure是一种运行在Java虚拟机(JVM)上的Lisp方言，它结合了Lisp的表达性和JVM的强大功能。以下是一份详细的Clojure学习计划，帮助你从基础到高级逐步掌握这门语言。&lt;/p&gt;</description></item><item><title>Clojure 基础教程：从函数式编程核心概念到并发开发与 Web 服务实战</title><link>https://plumephp.com/clojure-basic-tutorial/</link><pubDate>Fri, 19 Jul 2024 18:44:57 +0800</pubDate><guid>https://plumephp.com/clojure-basic-tutorial/</guid><description>&lt;p&gt;Clojure 是一种运行在 JVM（以及 CLR、JavaScript 运行时）上的现代 &lt;strong&gt;Lisp 方言&lt;/strong&gt;，以其&lt;strong&gt;不可变数据结构&lt;/strong&gt;、&lt;strong&gt;纯函数优先&lt;/strong&gt;和&lt;strong&gt;强大的并发抽象&lt;/strong&gt;而闻名。它是函数式编程思想在工业级环境中的最佳落地实践之一，被广泛应用于金融系统、大数据处理、Web 后端和 DevOps 工具链。&lt;/p&gt;</description></item></channel></rss>