2013-03-26 19 views
7

Ich bin ein Common Lisp Neuling, der die Sprache zu lernen beginnt. Meine Frage ist: Ich habe gesehen, dass mehrere Funktionen die Prädikatsyntax auf verschiedene Arten verwenden. Zum Beispiel (nur nachgeschlagen), gibt es Streamp und Pfadname, aber es gibt auch Input-Stream-P und Output-Stream-P. Warum sind nicht alle Funktionen standardisiert, um * p oder * -p zu verwenden? Ist das vielleicht nur ein historisches Artefakt?Warum unterscheidet sich die Benennungskonvention für Prädikate zwischen verschiedenen Funktionen?

+1

Hauptsächlich historische - Common Lisp endete weitgehend als eine einfache Vereinigung von allem aus jeder großen Lisp-Implementierung zu der Zeit, fast alle zusammengeworfen mit mehr Interesse daran sicherzustellen, dass der vorhandene Code weiter funktionieren würde als bei der Schaffung einer Sprache, die passt wirklich gut zusammen. –

+1

Dies ist nicht wirklich "Syntax" - es ist "Namenskonvention" – GoZoner

+1

@ GoZoner Guter Punkt, behoben. –

Antwort

11

Die Regel ist, dass Ein-Wort-Prädikat-Namen in nur P, beenden, während Mehrwort-Prädikat-Namen in -P beenden. Der Grund für Ersteres ist meist historisch; Der Grund für Letzteres ist, dass ein Name wie fälschlicherweise vorschlägt, dass die Frage, die gestellt wird, "ist diese Eingabe ein Stream?" oder Ähnliches ist.

+1

Ich nenne in der Regel "Prädikat" und "Komplex-Prädikat-P" (oder alternativ "Simpel" und "Komplex-Prädikat-P"). – Vatine

+0

Beachten Sie auch, dass Sie in einigen Fällen keinen Bindestrich für Prädikate mit mehreren Wörtern hinzufügen (z. B. "String-lip"). Siehe [Common Lisp the Language, 2. Ausgabe] (http://www.cs.cmu.edu/Groups/AI/html/ctll/clm/node69.html). – coredump

+0

Und auch dort ist "Atom" :) [Common Lisp die Sprache, 2. Ausgabe] (http://www.cs.cmu.edu/Groups/AI/html/ctl.clm/node73.html) –

Verwandte Themen