Ich habe gelesen, dass die meisten Sprachen immer mehr wie Lisp werden, Funktionen übernehmen, die Lisp schon lange hat. Ich frage mich, welche Funktionen, alt oder neu, Lisp nicht hat? Mit Lisp meine ich die gebräuchlichsten Dialekte wie Common Lisp und Scheme.
Antworten
Zu viele Anzeigen?- Ganze-Programm-Transformationen. (Es wäre wie Makros, aber für alles. Du könntest es verwenden, um deklarative Sprachfunktionen zu implementieren.) Alternativ die Fähigkeit, Add-Ons für den Compiler zu schreiben. (Zumindest fehlt das in Scheme. CL möglicherweise nicht.)
- Eingebauter Theorem-Assistent / Beweisprüfer zum Nachweis von Behauptungen über Ihr Programm.
Natürlich kenne ich keine andere Sprache, die diese Funktionen hat, daher denke ich, dass es in Bezug auf die Merkmale nicht viel Wettbewerb gibt.
Du stellst die falsche Frage. Die Sprache mit den meisten Funktionen ist nicht die beste. Eine Sprache braucht ein Ziel.
Wir könnten all das und mehr hinzufügen
* Referenzübergabe (C++/C#)
* String Interpolation (Perl/Ruby)
* Schöne Infix-Syntax (obwohl es nicht klar ist, ob es sich lohnt) (Python)
* Monadische 'Iteration'-Konstruktion, die für andere Zwecke überladen werden kann (Haskell/C#/F#/Scala)
* Statische Typisierung (obwohl es nicht klar ist, ob es sich lohnt) (viele Sprachen)
* Typinferenz (zumindest nicht im Standard) (Caml und viele andere)
* Abstrakte Datentypen (Haskell/F#/Caml)
* Pattern Matching (Haskell/F#/Caml/Scala/andere)
* Backtracking (obwohl es nicht klar ist, ob es sich lohnt) (Prolog)
* Ad-hoc-Polymorphismus (siehe Antwort von Andrew Myers)
* Unveränderliche Datenstrukturen (viele Sprachen)
* Lazy Evaluation (Haskell)
aber das würde eine gute Sprache machen. Eine Sprache ist nicht funktional, wenn du call by ref benutzt.
Wenn du dir die neue Liste Clojure ansiehst. Einige davon sind implementiert, aber andere, die CL hat, sind es nicht, und das macht eine gute Sprache aus.
Zum Beispiel hat Clojure einige hinzugefügt:
Ad-hoc-Polymorphismus Lazy Evaluation Unveränderliche Datenstrukturen Typinferenz (die meisten dynamischen Sprachen haben Compiler, die das tun)
Meine Antwort lautet:
Scheme sollte so bleiben, wie es ist. CL könnte einige Ideen zum Standard hinzufügen, wenn sie einen neuen erstellen würden.
Es ist LISP, das meiste kann mit Libraries hinzugefügt werden.
- See previous answers
- Weitere Antworten anzeigen
1 Stimmen
Marktplatznachfrage? Pax duckt sich in Deckung :-)