【发布时间】:2011-04-27 03:08:08
【问题描述】:
仅仅因为函数是一等对象,有闭包和更高阶的函数,Javascript 是否应该被称为函数式编程语言?我认为它缺少的主要是纯函数,它不像其他函数式语言,比如 lisp(尽管这并不是它不成为函数式语言的真正理由......)
【问题讨论】:
-
@slashmais:不!这只会阻止它成为纯粹的函数式语言。 ML(至少是现代方言)也是不纯的——但没有人敢称它们没有功能;)
-
有很多语言通常被认为是函数式的,但它们并不纯粹。我看不出这是什么要求。如果你想那么严格,那么大多数所谓的 OOP 语言也不是 OOP。你最终会发现大约 95% 的语言都是非范式语言。
-
为什么这很重要?当我用 C++ 编码时,我不在乎语言是否“是 OOP”。我关心它是否具有某些 OOP 特性,并且它具有几个函数式编程特性、许多命令式编程特性和许多通用编程特性。但它是“是”OOP 语言还是 FP 语言或其他语言都无关紧要。同样,当我在 JS 中编码时,它是否是 FP 都没关系。重要的是它支持许多不错的 FP 功能。看来这是一个错误的问题。
-
@hvgotcodes:所以?绝对没有规则说它不是。我的经验法则是,如果您可以使用它以函数式风格进行编程,那么它就是一种函数式语言。由于 Javascript 具有一流的函数、闭包和 lambda,我相信您可以,就我而言,它是一种函数式语言。显然,这不是一种纯粹的语言,但我们通常考虑的大多数语言也不是 FP(例如 SML)。所以真的,我认为你只需要放松一下。如果这让您的眼睛抽搐,您需要去看医生。
-
@jalf,绝对的。这个问题的动机是我想知道我的同龄人和比我聪明的人的想法。
标签: javascript functional-programming terminology