REPL: Jest to procedura, która po prostu zapętla, akceptuje jedno polecenie na raz, wykonuje je i drukuje wynik.
Trzy kroki przy każdej iteracji pętli to:
- Wywołanie read w celu odczytania znaków składających się na wyrażenie tekstowe z bufora wejściowego klawiatury i zbudowanie struktury danych do jej reprezentowania,
- Wywołanie eval w celu oceny wyrażenia - intuicyjnie, eval „odkrywa, co to znaczy wyrażenie” i „robi to, co mówi, aby zrobić”, zwracając wartość wyrażenia - i
- Wywołanie write, aby wydrukować tekstową reprezentację wynikową z eval, aby użytkownik mógł ją zobaczyć.
Możesz napisać własną pętlę read-eval-print dla własnych programów, aby użytkownicy mogli pisać wyrażenia i interpretować je w dowolny sposób. Możesz uruchomić pętlę read-eval-print (wpisując (rep-loop)), a ona przejmie normalną pętlę read-eval-print Schematu, interpretując wyrażenia na swój sposób.
Oto bardzo prosta pętla read-eval-print:
(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
Zauważ, że wyrażenie (write (eval (read))) działa we właściwej kolejności odczytu-eval-print, ponieważ argument do każdego wywołania procedury jest obliczany przed faktycznym wywołaniem.
Interaktywna powłoka: interaktywna powłoka odczytuje polecenia z danych wprowadzanych przez użytkownika na terminalu. Między innymi taka powłoka odczytuje pliki startowe podczas aktywacji, wyświetla monit i domyślnie włącza kontrolę zadań. Użytkownik może wchodzić w interakcje z powłoką. Tak powstała interaktywna nazwa powłoki. Rozważmy ten skrypt 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
Teraz powyższy skrypt współdziała z użytkownikiem, prosi użytkownika o wprowadzenie danych wejściowych, na podstawie których wykonuje swoje obliczenia. Dlatego zachowuje się jak interaktywna powłoka.
Podobnie interpreter języka Python, którego większość ludzi używa do nauki języka Python, jest interaktywny, ponieważ komunikuje się z użytkownikiem.