Neben den First-Class-Funktionen und dem Lexical-Scoping, was teilt JavaScript mit Scheme-Implementierungen?

8

Ich habe mich immer gefragt, warum Douglas Crockford JavaScript mit Scheme vergleicht. Ja, JS sollte vom Designer entworfen werden. Aber neben der Unterstützung der ersten Klassenfunktion und dem lexikalischen Scoping (gebrochen), welche Eigenschaften hat JS mit Schema gemeinsam, was es zu "Lisp in C's Clothing" macht?

    
unj2 12.03.2011, 13:23
quelle

4 Antworten

6

Eine andere Sache, die mir in den Sinn kommt, ist die allgegenwärtige Verwendung einer einzigen ubiquitären Datenstruktur in der gesamten Sprache und den Bibliotheken: cons lists im Fall von Scheme, maps ( Objekte ) im Falle von ECMAScript.

Dann gibt es nicht nur die Tatsache, dass ECMAScript über erstklassige Prozeduren verfügt, sondern dass diese Prozeduren der only Abstraktionsmechanismus sind. (Oder genauer Kapselung Mechanismus.)

    
Jörg W Mittag 12.03.2011 13:33
quelle
6

Eine Sache, die auf dieser Liste hoch sein sollte, ist eine REPL. Scheint wie eine Technik, vor allem, wenn diese Repls normalerweise hinter einigen "Entwickler-Tools" versteckt sind, aber es hat einen großen Einfluss auf die Sprache. (Zum Beispiel ist es natürlich, ein echtes eval zu haben, wenn es ein Replikat gibt, usw.) Es stellt im Grunde genommen eine dynamische Evaluierung von Code dar, der einen erstklassigen Status hat, was für JS sehr nützlich ist und wahrscheinlich viel mehr dazu beigetragen hat Erfolg als erstklassige Funktionen (die bis vor wenigen Jahren wirklich kaum genutzt wurden).

    
Eli Barzilay 12.03.2011 19:25
quelle
5

Aus der Spitze meines Kopfes, plus Blick auf Wikipedia :

  • Blockstruktur
  • Laufzeitkontrolle
  • Eval
  • Kein (expliziter) Übersetzungsschritt
  • Klein, aber reichhaltig stdlib
  • Freigegebener Namespace für Prozeduren und Variablen
Ken 12.03.2011 16:42
quelle
0

Nun, JavaScript fehlt Homoiconicity , und das ist eine der Haupteigenschaften von Lisp Dialekten.

    
Marko 15.03.2011 14:08
quelle