来自 Python、Javascript 和 Java 等命令式语言,我经常阅读有关函数开销以及从性能角度避免映射的原因。显然,这些不是函数式语言,外来概念通常往往不太优化且不太惯用。我知道调用函数会将值从寄存器推回堆栈,这很昂贵。
因此,随着最近关于 FP 概念和语言的热议,我真的很想知道 Haskell 是如何解决这个问题的?仅仅是编译器内联了很多吗?除此之外,JVM 上的 FP-Languages (Clojure/Scala) 如何解决这个问题?就优化 FP 代码而言,甚至没有一个像样的 Tail-Call 优化也能很好地说明 JVM 的能力。
谢谢!