Perish or Flourish? A Holistic Evaluation of Large Language Models for Code Generation in Functional Programming

📄 arXiv: 2601.02060v1 📥 PDF

作者: Nguyet-Anh H. Lang, Eric Lang, Thanh Le-Cong, Bach Le, Quyet-Thang Huynh

分类: cs.PL, cs.AI, cs.SE

发布日期: 2026-01-05


💡 一句话要点

FPEval:全面评估LLM在函数式编程代码生成中的性能与风格

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 函数式编程 代码生成 大型语言模型 评估框架 静态分析

📋 核心要点

  1. 现有LLM代码生成评估主要集中于命令式编程,缺乏对函数式编程语言的深入评估。
  2. 提出FPEval框架,包含FPBench基准测试集,并结合测试验证与静态分析,全面评估LLM在函数式编程中的代码生成能力。
  3. 实验表明,LLM在函数式编程中性能随模型进步而提升,但错误率仍高于命令式语言,且常生成非惯用代码。

📝 摘要(中文)

函数式编程为开发可靠和安全的软件系统提供了坚实的基础,但由于学习曲线陡峭,其应用并不广泛。大型语言模型(LLM)在代码生成方面的最新进展为降低这些障碍带来了新的机遇。然而,对LLM的广泛评估主要集中在命令式编程语言上,它们在函数式编程语言(FP)中的能力仍未得到充分探索。为了解决这一差距,我们引入了FPEval,这是一个建立在FPBench之上的整体评估框架,FPBench是一个包含721个编程任务的新基准,涵盖Haskell、Ocaml和Scala三种主流FP语言的三个难度级别。FPEval提供了全面的评估基础设施,包括带有全面测试套件的测试验证和静态分析工具,以评估功能正确性和代码风格及可维护性。使用此框架,我们评估了最先进的LLM,包括GPT-3.5、GPT-4o和GPT-5,用于函数式编程语言和Java(作为命令式基线)的代码生成。结果表明,LLM在函数式编程中的性能随着模型的进步而显着提高;然而,在纯函数式语言(Haskell和OCaml)中的错误率仍然明显高于混合型(Scala)或命令式(Java)语言。此外,LLM经常生成遵循命令式模式的非惯用函数式代码,这引发了对代码风格和长期可维护性的担忧。最后,我们表明,当提供静态分析反馈和针对常见类型问题的手工指令时,LLM可以部分地自我修复正确性和质量问题。

🔬 方法详解

问题定义:论文旨在解决大型语言模型(LLM)在函数式编程语言(如Haskell、OCaml和Scala)代码生成能力评估不足的问题。现有LLM的评估主要集中在命令式编程语言上,忽略了函数式编程的特性和挑战,导致无法全面了解LLM在函数式编程领域的实际表现。现有方法无法有效评估LLM生成的函数式代码的正确性、代码风格和可维护性。

核心思路:论文的核心思路是构建一个全面的评估框架FPEval,该框架包含一个专门为函数式编程设计的基准测试集FPBench,并结合了测试验证和静态分析工具,以多维度评估LLM生成的函数式代码。通过FPBench提供多样化的编程任务,测试LLM在不同难度级别和不同函数式编程语言中的代码生成能力。静态分析工具用于评估代码风格和可维护性,从而更全面地了解LLM在函数式编程中的优缺点。

技术框架:FPEval框架主要包含以下几个模块:1) FPBench基准测试集:包含721个编程任务,涵盖Haskell、OCaml和Scala三种函数式编程语言,并分为三个难度级别。2) 测试验证模块:使用全面的测试套件验证LLM生成的代码的功能正确性。3) 静态分析模块:使用静态分析工具评估LLM生成的代码风格和可维护性,例如代码复杂度、代码重复率等。4) LLM自修复模块:探索LLM在接收到静态分析反馈后,自我修复代码的能力。

关键创新:论文的关键创新在于:1) 提出了专门针对函数式编程的全面评估框架FPEval,填补了LLM在函数式编程领域评估的空白。2) 构建了FPBench基准测试集,为函数式编程代码生成提供了一个标准化的评估平台。3) 结合测试验证和静态分析,实现了对LLM生成的函数式代码的多维度评估。4) 探索了LLM在接收到静态分析反馈后,自我修复代码的能力。

关键设计:FPBench基准测试集的设计考虑了不同函数式编程语言的特性和难度级别,确保了评估的全面性和有效性。静态分析工具的选择和配置,以及测试套件的构建,都经过了精心的设计,以确保能够准确评估LLM生成的代码风格和功能正确性。LLM自修复模块的设计,采用了手工指令和静态分析反馈相结合的方式,引导LLM进行代码优化。

🖼️ 关键图片

fig_0
fig_1

📊 实验亮点

实验结果表明,LLM在函数式编程中的性能随着模型进步而提升,GPT-4o优于GPT-3.5。然而,在纯函数式语言(Haskell和OCaml)中的错误率仍然明显高于混合型(Scala)或命令式(Java)语言。LLM经常生成非惯用函数式代码,但可以通过静态分析反馈和手工指令进行部分自我修复。

🎯 应用场景

该研究成果可应用于自动化代码生成、函数式编程教育、软件质量保证等领域。通过FPEval框架,可以更准确地评估和改进LLM在函数式编程中的代码生成能力,降低函数式编程的学习门槛,提高软件开发效率和质量。未来,该研究可以扩展到更多函数式编程语言和更复杂的编程任务,为函数式编程的普及和应用提供有力支持。

📄 摘要(原文)

Functional programming provides strong foundations for developing reliable and secure software systems, yet its adoption remains not widespread due to the steep learning curve. Recent advances in Large Language Models (LLMs) for code generation present new opportunities to lower these barriers. However, extensive evaluations of LLMs largely focus on imperative programming languages, and their capabilities in functional programming languages (FP) remain underexplored. To address this gap, we introduce FPEval, a holistic evaluation framework built on FPBench, a new benchmark of 721 programming tasks across three difficulty levels on three mainstream FP languages: Haskell, Ocaml and Scala. FPEval provides compehensive evaluation infrastructures with both test validations with comprehensive test suites and static analysis tools to assess both functional correctness and code style and maintainability. Using this framework, we evaluate state-of-the-art LLMs, including GPT-3.5, GPT-4o, and GPT-5, for code generation in functional programming languages and Java as an imperative baseline. Our results demonstrate that LLM performance in functional programming improves substantially with model advancement; however, error rates remain significantly higher in purely functional languages (Haskell and OCaml) than in hybrid (Scala) or imperative (Java) languages. Moreover, LLMs frequently generate non-idiomatic functional code that follows imperative patterns, raising concerns about code style and long-term maintainability. Finally, we show that LLMs can partially self-repair both correctness and quality issues when provided with static analysis feedback and hand-crafted instructions for common types of issues.