Saiten in der Mitte von Lisp S-exp?

7

Ich habe eine Handvoll Dinge wie "lisp documentation strings", "lisp comments" und ein paar andere gegoogelt und ich kann nichts finden, was genau das anspricht.

Ich sehe viel Code (besonders in CL und elisp), der aussieht wie

%Vor%

Wo würde ich normalerweise

machen %Vor%

Was ist bevorzugt? Haben beide einen anderen Zweck? Danke!

    
Leo 18.11.2015, 18:04
quelle

4 Antworten

8

Viele Objekte in Common Lisp können eine Dokumentationszeichenfolge haben, die mit der generischen Funktion abgerufen werden kann documentation und wird mit der generischen Funktion (setf documentation) festgelegt. Gemäß der Spezifikation :

  

Dokumentationsstrings werden für Debugging-Zwecke zur Verfügung gestellt. Konforme Programme dürfen Dokumentationszeichenfolgen verwenden, wenn sie vorhanden sind. Sie sollten jedoch nicht von ihrem korrekten Verhalten beim Vorhandensein dieser Dokumentationszeichenfolgen abhängen. Eine Implementierung darf Dokumentationszeichenfolgen zu Implementierungszwecken jederzeit verwerfen.

Der erste Fall erlaubt also die Definition einer Variablen zusammen mit ihrer Dokumentationszeichenfolge, die verwendet werden kann, um zur Laufzeit zu speichern, wenn die Implementierung es erlaubt, Informationen, die für Dokumentations- und Debugging-Zwecke nützlich sind, entweder über die IDE, oder direkt, durch ein Formular wie:

%Vor%

Der zweite Fall ist stattdessen nur ein Kommentar in einer Quelldatei, der nur für den menschlichen Gebrauch nützlich ist und vom Leser / Compiler des Systems vollständig ignoriert wird.

    
Renzo 18.11.2015, 18:33
quelle
5

Entwicklungsumgebungen verwenden diese Dokumentationsfunktionen. Zum Beispiel GNU Emacs / SLIME:

Bewegen Sie den Textcursor auf das Symbol% ​​co_de%.

Geben Sie c-c c-d c-d (Beschreiben Sie das Symbol) ein.

Jetzt zeigt SLIME einen Puffer mit folgendem Inhalt an:

%Vor%

Ein einfacher Kommentar im Quellcode aktiviert diese Form der Integration und Dokumentation der Entwicklungsumgebung nicht.

    
Rainer Joswig 18.11.2015 19:11
quelle
4

Ich habe gesehen, dass Ihr Tag auch Schema und Elisp enthielt. In CL und Elisp immer Docstrings verwenden. Sie werden von Dokumentationssystemen in ihren Sprachen verwendet. Scheme verfügt nicht über dieses Feature, daher müssen Sie weiterhin Kommentare verwenden, um Funktionen zu dokumentieren.

    
PuercoPop 18.11.2015 19:12
quelle
2

Haben Sie versucht, Hyperspec für defvar zu sehen?

defvar benötigt ein optionales Argument - eine Dokument-Zeichenkette, und davon reden Sie.

Auf diese Weise angegebene Dokumentation kann durch documentation :

bearbeitet werden %Vor%     
coredump 18.11.2015 18:32
quelle