2

最近,我一直想创建一个小型(教育性的)功能优化编译器。对于优化部分,我想使用 SSA。问题是(据我所知,大多数)函数式编程语言都有不可变的变量(默认情况下),所以每个变量只分配一次,就像在 SSA 中一样。需要SSA吗?功能程序(例如在 Haskell 中)是否已经采用 SSA 形式?

4

1 回答 1

3

是的,用纯函数式语言(例如 Haskell)编写的程序是 SSA 形式的。您可以在这篇研究论文中找到更多解释。

请注意,并非所有函数式语言都是如此。例如,OCaml 允许程序员改变变量并编写命令式块(这使得 OCaml 不是纯函数式语言),打破了 SSA 形式。

于 2020-10-15T07:54:05.093 回答