9 Stimmen

Welche Funktionen fehlen Lisp?

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.

1 Stimmen

Marktplatznachfrage? Pax duckt sich in Deckung :-)

1voto

Noah Lavine Punkte 793
  • 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.

0voto

nickik Punkte 5709

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.

-1voto

Brian Punkte 115257

Ordentliche Syntax. (Irgendjemand musste es sagen.) Es mag einfach/einheitlich/homoikonisch/makrofähig usw. sein, aber als Mensch mag ich es einfach nicht anzusehen :)

-3voto

Mel Gerats Punkte 2220

Es fehlt einem großartigen IDE

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X