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?
Warum unterscheidet sich die Benennungskonvention für Prädikate zwischen verschiedenen Funktionen?
Antwort
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.
Ich nenne in der Regel "Prädikat" und "Komplex-Prädikat-P" (oder alternativ "Simpel" und "Komplex-Prädikat-P"). – Vatine
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
Und auch dort ist "Atom" :) [Common Lisp die Sprache, 2. Ausgabe] (http://www.cs.cmu.edu/Groups/AI/html/ctl.clm/node73.html) –
- 1. Warum unterscheidet sich die Funktionssignatur zwischen array_map und array_filter/array_reduce?
- 2. onGlobalLayout unterscheidet zwischen verschiedenen Aufrufen
- 3. Warum unterscheidet sich die Skalierung von Steuerungen zwischen PCs?
- 4. Warum unterscheidet sich die Dynamodb-Leistung zwischen diesen Abfragen?
- 5. Warum unterscheidet sich {} + [] von ({} + [])?
- 6. Warum Schaltfläche Höhe unterscheidet sich auf verschiedenen Geräten
- 7. TextView-Größe unterscheidet sich auf verschiedenen Gerät
- 8. Identischer Code unterscheidet sich von verschiedenen Quellen
- 9. Warum ändert sich die Javascript-Variable nicht zwischen den Funktionen?
- 10. Warum unterscheidet sich string.letters zwischen Python und bpython?
- 11. Wie unterscheidet Python zwischen den verschiedenen Datentypen?
- 12. Welche Funktionen in SQL sind Prädikate?
- 13. ls() Funktionsausgabe unterscheidet sich zwischen R & RStudio
- 14. Warum unterscheidet sich die manuelle Einrichtungszeit von der aktuellen Uhrzeit?
- 15. Unterscheidet sich identifierForVendor zwischen Entwicklungs- und Distributionsversionen?
- 16. setSubmitMode-Methode unterscheidet sich zwischen Benutzern
- 17. Warum unterscheidet sich das Datumsformat für dieselbe Kultur auf verschiedenen Computern oder Betriebssystemen?
- 18. Texthöhe unterscheidet sich zwischen IB und Simulator
- 19. PHP Curl API Antwortzeit unterscheidet sich von verschiedenen Server
- 20. Warum git AuthorDate unterscheidet sich von CommitDate?
- 21. Wie unterscheidet sich die Variablendeklaration zwischen `Klasse` und` Konstruktor`?
- 22. App-Größe unterscheidet sich in verschiedenen Android-Versionen
- 23. Warum unterscheidet sich meine iPhone 6 Bildschirmauflösung?
- 24. Warum unterscheidet sich std :: uint32_t von uint32_t?
- 25. Wie unterscheidet sich Hashtable
- 26. Warum unterscheidet sich die Kameraansicht in optix von OpenGL?
- 27. Warum unterscheidet sich die Ausgabe bei Verwendung des folgenden Skripts?
- 28. Benennungskonvention für Variablen im Klassenkonstruktor
- 29. Warum unterscheidet sich die Arbeitserlaubnis des PHP-Skripts zwischen den Servern?
- 30. Python - Hashlib MD5 unterscheidet sich zwischen linux/windows
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. –
Dies ist nicht wirklich "Syntax" - es ist "Namenskonvention" – GoZoner
@ GoZoner Guter Punkt, behoben. –