REPL: Questa è una procedura che esegue solo un loop, accetta un comando alla volta, eseguendolo e stampando il risultato.
I tre passaggi a ogni iterazione del ciclo sono:
- Chiamare leggere per leggere i caratteri che costituiscono un'espressione testuale dal buffer di input della tastiera e costruire una struttura dati per rappresentarlo,
- Chiamando eval per valutare l'espressione - intuitivamente, eval "capisce cosa significa l'espressione" e "fa quello che dice di fare", restituendo il valore dell'espressione - e
- Chiamando scrivi per stampare una rappresentazione testuale del risultato di eval, in modo che l'utente possa vederlo.
È possibile scrivere il proprio ciclo read-eval-print per i propri programmi, in modo che gli utenti possano digitare le espressioni e interpretarle nel modo desiderato. Puoi avviare il tuo ciclo read-eval-print (digitando in (rep-loop)), e prenderà il posto del normale ciclo Scheme-eval-print dello schema, interpretando le espressioni a modo tuo.
Ecco un ciclo di lettura-eval-print molto semplice:
(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
Si noti che l'espressione (write (eval (read))) fa le cose nell'ordine corretto read-eval-print, perché l'argomento per ogni chiamata di procedura viene calcolato prima della chiamata effettiva.
Shell interattiva: una shell interattiva legge i comandi dall'input dell'utente su un terminale. Tra le altre cose, una shell di questo tipo legge i file di avvio all'attivazione, visualizza un prompt e abilita il controllo dei processi per impostazione predefinita. L'utente può interagire con la shell. Ecco come è nato il nome della shell interattiva. Prendiamo in considerazione questo script bash:
#!/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
Ora lo script sopra interagisce con l'utente, chiede all'utente di inserire gli input in base ai quali esegue i suoi calcoli. Ecco perché si comporta come una shell interattiva.
Similario, l'interprete python che la maggior parte delle persone usa per imparare Python è interattivo mentre comunica con il suo utente.