Lean 4 是一种与 Haskell 和 OCaml 血统相似的函数式编程语言。虽然它主要作为证明辅助工具(一种用于数学验证软件正确性的工具)而闻名,但近期它已演变为一个可行的通用应用程序开发环境。该语言的标准库现在包含一个 HTTP 服务器,且不断增长的社区驱动库提供了现代 Web 应用所需的必要基础设施,包括 PostgreSQL 驱动程序、加密技术和 HTML 渲染。

为了测试这些能力,一名开发者构建了“RealWorld”,这是一个著名的参考应用程序(Medium 的克隆版),用于基准测试全栈实现。该项目利用了几个关键组件:用于底层连接处理的 `Std.Http`,用于定义具有类型参数的 API 路由的 `lean-routing`,以及用于数据库交互的 `leanpostgres`。一个显著的架构选择是使用 `lean-html` 将页面渲染为普通的 Lean 函数,而不是使用传统的模板。为了实现前端交互,该项目采用了 `datastar-lean`(Datastar 的 SDK),它允许服务器以极少的前端构建步骤动态更新页面。最终的后端实现非常简洁,总计 1,033 行代码,甚至短于 TypeScript、Go 和 C# 中的几种常见实现。

RealWorld 应用程序界面的截图。
RealWorld 应用程序是全栈开发的标准基准。leangineer.com

开发者使用 RealWorld 项目来展示 Lean 4 处理全栈需求的能力。

虽然该项目证明了 Lean 4 可以处理全栈需求,但它也突显了关于生产就绪性和形式化验证的特定权衡。当前的 Lean HTTP 服务器存在已知的性能限制,且该语言快速的发布周期偶尔会导致依赖项失效。此外,虽然 Lean 允许“通过构造实现正确性”——即代码源自形式规范且每一步都经过数学证明——但开发者指出,RealWorld 的规范仅是部分形式化的。例如,虽然该应用可以证明 URL “slug” 是格式正确的,因为它捆绑了其有效性的数学证明,但更广泛的应用程序行为仍依赖于传统的测试。该项目表明,虽然 Lean 4 提供了一条通往高质量、经过验证的代码的路径,但目前仍需要在关键逻辑的形式化证明与通用功能的标准测试之间取得平衡。