JavaScript提供了哪些函数式编程方面的子集和类似Lisp的特性?
切中要害的是,凯文·坎图(Kevin Cantu)在一篇评论中说: 是的,不仅仅是语法,JavaScript可能更重要 比哈斯克尔更口齿不清。(最初设想为一项计划 实施…) 此外,他们还说: 很明显,JS和Lisp在同一阶段有着紧密的联系 语义级别[…]JavaScript提供了哪些函数式编程方面的子集和类似Lisp的特性?,javascript,functional-programming,lisp,Javascript,Functional Programming,Lisp,切中要害的是,凯文·坎图(Kevin Cantu)在一篇评论中说: 是的,不仅仅是语法,JavaScript可能更重要 比哈斯克尔更口齿不清。(最初设想为一项计划 实施…) 此外,他们还说: 很明显,JS和Lisp在同一阶段有着紧密的联系 语义级别[…] 我熟悉Lisp和函数式编程,但不熟悉JavaScript。因此,这些命题让人怀疑JavaScript有多强大。到目前为止,我读到的是它提供了lambda表达式和闭包。它还提供了哪些函数式编程概念和类似Lisp的功能?例如,它是否提供尾部调用递归
我熟悉Lisp和函数式编程,但不熟悉JavaScript。因此,这些命题让人怀疑JavaScript有多强大。到目前为止,我读到的是它提供了lambda表达式和闭包。它还提供了哪些函数式编程概念和类似Lisp的功能?例如,它是否提供尾部调用递归、宏或将代码作为数据进行操作的能力(如Lisp)?JavaScript提供的一些东西可以被视为“类似Lisp”:
- 第一类函数(包括lambdas和闭包)
- 动态类型
- 动态对象模型与
- 与源代码格式(JSON)匹配的可读数据格式
- 具有“eval”功能的运行时评估(可在交互式应用程序中使用)
- 代码和数据的同象性表示(S表达式)
- 链接列表/序列的内置文字
- 通常支持不可变的数据结构(尤其是Clojure,其中每个数据结构都是不可变的)
- 元编程的扩展宏系统
- 用于性能优化的可选静态类型(例如,在Common Lisp或Clojure中键入提示)
- 并发支持
- 尾部呼叫优化