REPL: Dies ist eine Prozedur, die nur eine Schleife durchläuft, jeweils einen Befehl annimmt, ihn ausführt und das Ergebnis druckt.
Die drei Schritte bei jeder Iteration der Schleife sind:
- Aufruf von read, um die Zeichen, die einen Textausdruck bilden, aus dem Tastatureingabepuffer zu lesen und eine Datenstruktur zu erstellen, um ihn darzustellen,
- Eval aufrufen, um den Ausdruck zu bewerten - intuitiv, eval "findet heraus, was der Ausdruck bedeutet" und "tut, was er zu tun sagt" und gibt den Wert des Ausdrucks zurück - und
- Durch Aufrufen von write wird eine Textdarstellung des Ergebnisses von eval gedruckt, damit der Benutzer es sehen kann.
Sie können eine eigene Lese-Auswertungs-Druck-Schleife für Ihre eigenen Programme schreiben, damit Benutzer Ausdrücke eingeben und sie nach Belieben interpretieren können. Sie können Ihre Read-Eval-Print-Schleife starten (durch Eingeben von (rep-loop)). Sie übernimmt die normale Schema-Read-Eval-Print-Schleife und interpretiert Ausdrücke auf Ihre Weise.
Hier ist eine sehr einfache Read-Eval-Print-Schleife:
(define (rep-loop)
(display "repl>") ; print a prompt
(write (eval (read))) ; read expr., pass to eval, write result
(rep-loop)) ; loop (tail-recursive call) to do it again
Beachten Sie, dass der Ausdruck (write (eval (read))) die Dinge in der richtigen Reihenfolge (read-eval-print) ausführt, da das Argument für jeden Prozeduraufruf vor dem tatsächlichen Aufruf berechnet wird.
Interaktive Shell: Eine interaktive Shell liest Befehle von Benutzereingaben auf einem Terminal. Unter anderem liest eine solche Shell beim Aktivieren Startdateien, zeigt eine Eingabeaufforderung an und aktiviert standardmäßig die Auftragssteuerung. Der Benutzer kann mit der Shell interagieren. So ist der Name der interaktiven Shell entstanden. Betrachten wir dieses Bash-Skript:
#!/bin/bash
echo -n "Enter the value of variable 'var1': "
read var1
echo "var1 = $var1"
echo
echo -n "Enter the values of variables 'var2' and 'var3' "
echo =n "(separated by a space or tab): "
read var2 var3
echo "var2 = $var2 var3 = $var3"
# If you input only one value,
#+ the other variable(s) will remain unset (null).
exit 0
Jetzt interagiert das obige Skript mit dem Benutzer und fordert den Benutzer auf, Eingaben zu machen, auf deren Grundlage er seine Berechnungen durchführt. Deshalb verhält es sich wie eine interaktive Shell.
Similary, der Python-Interpreter, mit dem die meisten Leute Python lernen, ist ein interaktiver Interpreter, der mit dem Benutzer kommuniziert.