关于函数式编程语言的陈述是否正确?

时间:2016-11-20 21:22:44

标签: compiler-construction functional-programming transpiler

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

  

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

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

1 个答案:

答案 0 :(得分:6)

  

关于C / C ++的最后一部分是否正确?

不,不是。

有些语言会编译为C语言,但这并不是特定于函数式语言。如果这在函数式语言中比在非函数式语言中更常见,那么在某种程度上,人们可能会将其称为函数式语言的属性。

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

我能想到的两种语言,其主要实现编译为C的是Vala和Haxe,它们都不是函数式语言。在其中一个链接线程中,提到了Chicken Scheme。因此,这是一个使用C的相对着名的实现。这几乎不足以证明这是“通常"案件。