REPL: Це процедура, яка просто циклічно, приймає по черзі одну команду, виконує її та друкує результат.
Три етапи при кожній ітерації циклу:
- Виклик прочитаного для читання символів, що складають текстовий вираз з буфера введення клавіатури, і побудова структури даних для його представлення,
- Виклик eval для оцінки виразу - інтуїтивно, eval "з'ясовує, що означає вираз", і "робить те, що він говорить, робити", повертаючи значення виразу - і
- Закликаючи написати, щоб надрукувати текстове зображення результату eval, щоб користувач міг бачити це.
Ви можете написати свій цикл для читання для друку для своїх програм, щоб користувачі могли вводити вирази, а ви можете їх інтерпретувати будь-яким чином. Ви можете запустити цикл read-eval-print (ввівши (rep-loop)), і він перейде від звичайної схеми циклу 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
Зауважте, що вираз (write (eval (read))) виконує дії у відповідному порядку read-eval-print, оскільки аргумент для кожного виклику процедури обчислюється перед фактичним викликом.
Інтерактивна оболонка: інтерактивна оболонка зчитує команди з введення користувача на терміналі. Крім усього іншого, така оболонка зчитує файли запуску під час активації, відображає підказку та дозволяє керувати роботою за замовчуванням. Користувач може взаємодіяти з оболонкою. Так виникло ім'я інтерактивної оболонки. Розглянемо цей сценарій 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
Тепер вищезазначений сценарій взаємодіє з користувачем, він просить користувача ввести вхідні дані, на основі яких він робить свої розрахунки. Ось чому він поводиться як інтерактивна оболонка.
Сіміларі, інтерпретатор пітона, який більшість людей використовують для вивчення пітона, є інтерактивним під час спілкування зі своїм користувачем.