So lesen Sie die Eingabe bis EOF in Lisp

8

Wie lese ich einen Eingabestrom bis EOF in Lisp? In C könntest du es so machen:

%Vor%

Ich möchte in der Lage sein, Daten zu meinen Lisp-Programmen zu leiten, ohne die Datengröße im Voraus angeben zu müssen. Hier ist ein Beispiel von etwas, was ich gerade mache:

%Vor%

In dieser Schleife gibt die Variable *n* die Anzahl der Zeilen an, die ich dem Programm übergebe (der Wert wird aus der ersten Zeile der Eingabe gelesen), aber ich möchte nur eine willkürliche und unbekannte Anzahl von Zeilen verarbeiten Linien, stoppt, wenn es das Ende des Stroms erreicht.

    
Fredrick Pennachi 21.08.2009, 08:45
quelle

2 Antworten

9

read-line verwendet ein optionales Argument ( eof-error-p ), das erlaubt, entweder NIL (Standard) oder einen benutzerdefinierten Wert ( eof-value ) beim Treffer auf EOF zurückzugeben, anstatt einen Fehler zu signalisieren.

Aus Kapitel 19 von Erfolgreichem Lisp :

  

READ-LINE & amp; optionaler Stream eof-error-p eof-Wert recursive-p

     

In den oben aufgeführten Lesefunktionen geben die optionalen Argumente EOF-ERROR-P und EOF-VALUE an, was passiert, wenn Ihr Programm versucht, aus einem erschöpften Stream zu lesen. Wenn EOF-ERROR-P wahr ist (der Standardwert), wird Lisp beim Versuch, einen erschöpften Stream zu lesen, einen Fehler anzeigen. Wenn EOF-ERROR-P NIL ist, gibt Lisp EOF-VALUE (default NIL ) zurück, anstatt einen Fehler zu signalisieren.

Sie können dies als einfache Abbruchbedingung für Ihre Funktion verwenden.

    
ire_and_curses 21.08.2009, 09:05
quelle
13

Siehe HyperSpec für READ-LINE

%Vor%

oder manchmal mit nil

%Vor%     
Rainer Joswig 21.08.2009 09:54
quelle

Tags und Links