REPL: Il s'agit d'une procédure qui boucle, accepte une commande à la fois, l'exécute et affiche le résultat.
Les trois étapes à chaque itération de la boucle sont les suivantes:
- Appel de read pour lire les caractères qui constituent une expression textuelle à partir du tampon de saisie du clavier et créer une structure de données pour la représenter,
- Appel de eval pour évaluer l'expression - intuitivement, eval "détermine ce que signifie l'expression" et "fait ce qu'il dit de faire", en renvoyant la valeur de l'expression - et
- Appelez write pour imprimer une représentation textuelle du résultat de eval, afin que l'utilisateur puisse le voir.
Vous pouvez écrire votre propre boucle read-eval-print pour vos propres programmes, afin que les utilisateurs puissent saisir des expressions et les interpréter comme bon vous semble. Vous pouvez démarrer votre boucle read-eval-print (en tapant (rep-loop)) et la remplacer par la boucle Scheme read-eval-print normale, interprétant les expressions à votre manière.
Voici une boucle très simple 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
Notez que l'expression (write (eval (read))) fait les choses dans le bon ordre lecture-évaluation-impression, car l'argument de chaque appel de procédure est calculé avant l'appel lui-même.
Shell interactif: un shell interactif lit les commandes à partir des entrées utilisateur sur un terminal. Entre autres choses, un tel shell lit les fichiers de démarrage lors de l'activation, affiche une invite et active le contrôle des travaux par défaut. L’utilisateur peut interagir avec le shell. C’est ainsi que le nom du shell interactif a vu le jour. Considérons ce 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
Maintenant que le script ci-dessus interagit avec l'utilisateur, il lui demande de saisir des entrées sur lesquelles il effectue ses calculs. C'est pourquoi il se comporte comme un shell interactif.
De la même manière, l'interpréteur python que la plupart des gens utilisent pour apprendre le python est interactif puisqu'il communique avec son utilisateur.