这个关于函数式编程语言的说法正确吗?

问题描述 投票:0回答:1

我正在读一本关于编译器设计的书,其中有一部分说,

不同语言的编译器的主要区别在于它们生成的代码。一般来说,可以说命令式语言和面向对象语言的编译器生成汇编语言代码;而函数式语言编译器以 C 或 C++ 生成。

最后一部分关于 C/C++ 的内容正确吗?我通过谷歌搜索找不到任何东西,所以我在这里问。

compiler-construction functional-programming transpiler
1个回答
7
投票

最后一部分关于 C/C++ 的内容正确吗?

不,不是。

有些语言确实可以编译为 C,但这并不特定于函数式语言。如果这在函数式语言中比非函数式语言更常见,那么肯定不会有人将其称为函数式语言的属性。

此外,大多数现实世界的函数式编程语言绝对不会被编译为 C(通过其官方和/或最常用的实现)。如果我列出我能想到的前十种函数式编程语言/实现(Haskell(GHC、Hugs)、OCaml、F#、Scala、Clojure、Racket、Common Lisp(SBCL、CLisp)),它们都不会编译为 C(以据我所知)。 GHC 确实曾经有过 C 后端,但现已停止使用。

我能想到的两种主要实现编译为 C 的语言是 Vala 和 Haxe,它们都不是函数式语言。在其中一个链接的线程中,提到了“鸡计划”。这是一个相对知名的使用 C 的实现。这不足以证明“通常”情况是这样的说法。

© www.soinside.com 2019 - 2024. All rights reserved.