【问题标题】:Is this statement about functional programming languages correct?这个关于函数式编程语言的陈述是否正确?
【发布时间】:2016-11-20 21:22:44
【问题描述】:

我在读一本关于编译器设计的书,里面有一段说,

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

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

【问题讨论】:

标签: compiler-construction functional-programming transpiler


【解决方案1】:

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

不,不是。

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

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

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

【讨论】:

  • 我的函数式语言编译器发出 LLVM-IR。
猜你喜欢
  • 2011-01-07
  • 2013-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-11
  • 2011-09-04
相关资源
最近更新 更多