REPL: Ini adalah prosedur yang hanya memotong , menerima satu perintah pada satu waktu, menjalankannya, dan mencetak hasilnya.
Tiga langkah pada setiap iterasi loop adalah:
- Memanggil membaca untuk membaca karakter yang membentuk ekspresi tekstual dari buffer input keyboard, dan membuat struktur data untuk mewakilinya,
- Memanggil eval untuk mengevaluasi ekspresi - secara intuitif, eval "mengetahui apa arti ekspresi itu," dan "melakukan apa yang dikatakannya untuk dilakukan," mengembalikan nilai ekspresi - dan
- Memanggil menulis untuk mencetak representasi tekstual dari hasil eval, sehingga pengguna dapat melihatnya.
Anda bisa menulis loop read-eval-print Anda sendiri untuk program Anda sendiri, sehingga pengguna dapat mengetikkan ekspresi, dan Anda bisa menafsirkannya dengan cara apa pun yang Anda inginkan. Anda dapat memulai loop read-eval-print Anda (dengan mengetikkan (rep-loop)), dan itu akan mengambil alih dari loop read-eval-print Skema normal, menafsirkan ekspresi dengan cara Anda.
Inilah loop read-eval-print yang sangat sederhana:
(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
Perhatikan bahwa ekspresi (write (eval (read))) melakukan hal-hal dalam urutan read-eval-print yang tepat, karena argumen untuk setiap panggilan prosedur dihitung sebelum panggilan yang sebenarnya.
Shell Interaktif: Shell interaktif membaca perintah dari input pengguna pada terminal. Antara lain, shell tersebut membaca file startup saat aktivasi, menampilkan prompt, dan memungkinkan kontrol pekerjaan secara default. Pengguna dapat berinteraksi dengan shell. Itulah bagaimana nama shell interaktif muncul. Mari kita perhatikan skrip bash ini:
#!/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
Sekarang skrip di atas berinteraksi dengan pengguna, ia meminta pengguna untuk memasukkan input berdasarkan yang dilakukannya perhitungan. Itu sebabnya berperilaku seperti shell interaktif.
Sama halnya, interpreter python yang digunakan kebanyakan orang untuk mempelajari python adalah yang interaktif saat berkomunikasi dengan penggunanya.
Secara teknis, benar untuk mengatakan bahwa shell adalah turunan dari REPL. Namun, ini bukan masalah definisi program karena merupakan salah satu skenario penggunaan umum.
Bash, misalnya, ditulis dalam bahasa C, tetapi bisa juga ditulis dengan Python. Pada titik itu, jika Anda berbicara tentang fitur dan kemampuan program, apakah benar untuk mengatakan bahwa Bash adalah shell sedangkan Python tidak?
Anda juga bisa mengatakan bahwa Shell adalah tentang menjalankan perintah sementara REPL adalah tentang menjalankan instruksi dan panggilan fungsi. Tetapi tidak bisakah Anda menjalankan perintah dalam REPLs (sistem Python, os.popen, dll), dan tidak bisakah Anda menjalankan (atau mendefinisikan) fungsi di Bash, menggunakan banyak dari bawaannya?
Seperti disebutkan di atas, ini masalah penggunaan. Jika Anda menyulap file dan program yang sudah jadi, Anda menggunakannya sebagai shell. Jika Anda menguji pustaka atau semantik bahasa, itu adalah REPL.
Semoga itu bisa membantu.
sumber
Pertanyaan StackOverflow ini membahas pertanyaan itu (antara lain).
Saya pribadi di pagar sehubungan dengan Python interaktif. Tetapi, jika Anda ingin menyebutnya REPL, saya tidak berpikir ada orang yang akan marah kepada Anda (ada sedikit terlalu banyak hal yang berfungsi dalam file kode sumber, tetapi tidak dalam shell interaktif bagi saya untuk sepenuhnya senang dengan menelepon itu REPL).
sumber