2016-12-05 4 views
0

Versuchen, lisp zu lernen (und ich denke, Emacs mit ihm). Ich habe mich gefragt, wie Sie die Ausgabe löschen und ersetzen würden. Könnte in einem LISP-Repl oder einem Emacs-Puffer sein.
Etwas ähnlich wie in Python.Common Lisp: Flush Standard-Ausgabe

def go(r): 
    for i in range(r): 
     sys.stdout.write("\rDoing %i" % i) 
     sys.stdout.flush() 

Antwort

5

Für Common Lisp, die Sie suchen

Functions FINISH-OUTPUT, FORCE-OUTPUT, CLEAR-OUTPUT:

finish-output, force-output und clear-output Übung Kontrolle über die interne Handhabung von gepufferten Strom ausgegeben.

  • finish-output versucht sicherzustellen, dass alle gepufferten Ausgang zur Ausgabe-Datenstrom gesendet sein Ziel erreicht hat, und kehrt dann zurück.

  • force-output initiiert das Leeren aller internen Puffer, wartet aber nicht auf Beendigung oder Bestätigung, um zurückzukehren.

  • clear-output versucht, alle ausstehenden Ausgangsoperationen abzubrechen, um so wenig Ausgang wie möglich zum Ziel zu bringen.

und

Variables *DEBUG-IO*, *ERROR-OUTPUT*, *QUERY-IO*, *STANDARD-INPUT*, *STANDARD-OUTPUT*, *TRACE-OUTPUT*

  • Der Wert von *debug-io*, genannt Debug-I/O, ist ein Strom für interaktive Fehlersuche verwendet werden.

  • Der Wert *error-output*, genannt Fehlerausgabe, ist ein Stream, an den Warnungen und nicht interaktive Fehlermeldungen gesendet werden sollen.

  • Der Wert *query-io*, Abfrage-I/O genannt, ist ein bidirektionaler Stream, der verwendet wird, wenn Fragen des Benutzers gestellt werden. Die Frage sollte in diesem Stream ausgegeben und die Antwort daraus gelesen werden.

  • Der Wert *standard-input*, Standardeingabe genannt, ist ein Stream, der von vielen Operatoren als Standardquelle für die Eingabe verwendet wird, wenn kein bestimmter Eingabestream explizit angegeben wird. Der Wert *standard-output*, genannt Standardausgabe, ist ein Stream, der von vielen Operatoren als Standardziel für die Ausgabe verwendet wird, wenn kein bestimmter Ausgabestream explizit angegeben wird.

  • Der Wert von *trace-output*, Trace-Ausgabe genannt, ist der Stream, auf dem verfolgte Funktionen (siehe Trace) und das Zeitmakro ihre Ausgabe ausgeben.

Emacs Lisp ist ganz anders, Sie könnten hier starten: https://www.gnu.org/software/emacs/manual/html_node/elisp/Output-Functions.html