除了First Class Functions和Lexical Scoping之外,JavaScript与Scheme实现共享了什么?

时间:2011-03-12 13:23:10

标签: javascript programming-languages functional-programming lisp scheme

我一直想知道Douglas Crockford为何一直将JavaScript与Scheme进行比较。是JS的设计师打算成为Scheme;但除了第一类函数支持和词法范围(破坏)之外,JS与Scheme有什么共同点,使其成为“C的服装中的Lisp”?

4 个答案:

答案 0 :(得分:6)

我想到的另一件事是在整个语言和库中普遍使用单一的普遍存在的数据结构:在Scheme, maps 的情况下 cons列表(在ECMAScript的情况下称为对象

然后不仅有ECMAScript具有一流程序的事实,而且这些程序是唯一的抽象机制。 (或者更准确地说是封装机制。)

答案 1 :(得分:6)

这个列表中应该有的一件事就是拥有一个REPL。看起来像技术性,特别是当这些repl通常隐藏在一些“开发工具”之后,但它对语言有很大影响。 (例如,当有一个repl等时,有一个真正的eval是很自然的。)它基本上把代码的动态评估具有一等状态,这对JS之类的东西非常有用,并且可能贡献了更多它取得了成功而不是一流的功能(直到几年前才真正使用)。

答案 2 :(得分:5)

离开我的头顶,再看一眼Wikipedia

  • 块结构
  • 运行时检查
  • 评估
  • 否(显式)编译步骤
  • 小而富有的stdlib
  • 过程和变量的共享命名空间

答案 3 :(得分:0)

嗯,JavaScript缺少homoiconicity,这是Lisp方言的主要属性之一。