REPL: यह एक ऐसी प्रक्रिया है जो सिर्फ लूप करती है, एक समय में एक कमांड को स्वीकार करती है, इसे निष्पादित करती है, और परिणाम को प्रिंट करती है।
लूप के प्रत्येक पुनरावृत्ति पर तीन चरण हैं:
- वर्णों को पढ़ने के लिए कॉलिंग जो कीबोर्ड इनपुट बफर से एक शाब्दिक अभिव्यक्ति बनाते हैं, और इसका प्रतिनिधित्व करने के लिए एक डेटा संरचना का निर्माण करते हैं,
- अभिव्यक्ति का मूल्यांकन करने के लिए eval को बुलाते हुए - सहज रूप से, eval "आंकड़े का अर्थ है कि अभिव्यक्ति का क्या अर्थ है," और "यह वही करता है जो करने के लिए कहता है," अभिव्यक्ति का मूल्य लौटाता है - और
- ईवैल से परिणामी का एक पाठीय प्रतिनिधित्व छापने के लिए लेखन को कॉल करना, ताकि उपयोगकर्ता इसे देख सके।
आप अपने स्वयं के कार्यक्रमों के लिए अपना खुद का रीड-इवल-प्रिंट लूप लिख सकते हैं, ताकि उपयोगकर्ता अभिव्यक्ति में टाइप कर सकें, और आप उन्हें किसी भी तरह से व्याख्या कर सकते हैं जो आप चाहते हैं। आप अपना रीड-एवैल-प्रिंट लूप (इन-रिप-लूप) टाइप करके शुरू कर सकते हैं, और यह सामान्य स्कीम रीड-एवल-प्रिंट लूप से ले जाएगा, जो आपके तरीके की व्याख्या करेगा।
यहाँ एक बहुत ही सरल रीड-इवल-प्रिंट लूप है:
(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
ध्यान दें कि अभिव्यक्ति (लिखना (पढ़ना (पढ़ना))) चीजों को उचित रीड-इवल-प्रिंट ऑर्डर में करती है, क्योंकि प्रत्येक प्रक्रिया कॉल का तर्क वास्तविक कॉल से पहले गणना की जाती है।
इंटरएक्टिव शेल: एक इंटरैक्टिव शेल एक टर्मिनल पर उपयोगकर्ता इनपुट से कमांड पढ़ता है। अन्य बातों के अलावा, ऐसा शेल सक्रियण पर स्टार्टअप फ़ाइलों को पढ़ता है, एक शीघ्रता प्रदर्शित करता है, और डिफ़ॉल्ट रूप से नौकरी नियंत्रण को सक्षम करता है। उपयोगकर्ता शेल के साथ इंटरैक्ट कर सकता है। इंटरेक्टिव शेल नाम कैसे आया है। आइए इस बैश स्क्रिप्ट पर विचार करें:
#!/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
अब ऊपर की स्क्रिप्ट उपयोगकर्ता के साथ बातचीत करती है, यह उपयोगकर्ता को इनपुट्स दर्ज करने के लिए कहती है जिसके आधार पर वह अपनी गणना करता है। इसलिए यह एक इंटरैक्टिव शेल की तरह व्यवहार करता है।
सिमिलरी, पाइथन इंटरप्रेटर जिसका उपयोग ज्यादातर लोग अजगर को सीखने के लिए करते हैं, यह एक इंटरैक्टिव है क्योंकि यह अपने उपयोगकर्ता के साथ संचार करता है।