⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

Arrow 库的 Kleisli 组合子:纯函数式依赖注入

利用 Arrow 的 Kleisli (ReaderT) 构建类型安全的依赖注入系统,替代手动传参或框架。 · 难度:入门 · +10XP

Arrow 库的 Kleisli 组合子:纯函数式依赖注入

Kleisli 是函数式编程中用于组合带有上下文 (如 Reader) 的函数的抽象。本教程使用 Kotlin Arrow 库的 Kleisli 类型,将依赖 (如数据库连接、配置) 编码为 Reader 并组合成整个应用逻辑链。这种方式不需要任何运行时框架、反射或注入容器。你将看到如何通过 map/flatMap 组合多个需要相同依赖的函数,并保持纯引用透明性。

import arrow.core.*
import arrow.core.extensions.fx

typealias DbConfig = Map typealias DbReader = Kleisli

fun loadUser(id: Int): DbReader = Kleisli { config -> Id("User from ${config["db.url"]} with id $id") }

fun greet(user: String): DbReader = Kleisli { _ -> Id("Hello $user") }

fun main() { val program = DbReader.fx { val user = !loadUser(42) val greeting = !greet(user) greeting } println(program.run(Id(mapOf("db.url" to "localhost")))) }

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 92 篇
0 完成
🔥 0