14

मैं LearnYouSomeErlang वेब-बुक से एरलांग सीख रहा हूं। सीखने के दौरान मुझे मारने वाली एक चीज गैर शॉर्ट-सर्किटिंग बूलियन संयोजन और संयोजन ऑपरेटर जैसे थी; and और or। इन ऑपरेटरों के लिए उपयोग के मामले क्या हैं? आप andalso और orelse के बजाय उनका उपयोग क्यों करना चाहेंगे?एरलांग में गैर शॉर्ट सर्किटिंग बूलियन ऑपरेटर का उपयोग क्या है?

+0

'तर्क प्रोग्रामिंग' के साथ टैग की गईं क्योंकि मुझे बताया गया था कि प्रोलॉग में एरलांग की उत्पत्ति के साथ इसका कुछ संबंध है। – missingfaktor

+0

संबंधित: [गार्ड परीक्षणों में 'और' '' '' '' '' '' '' को पसंद करना] (http://stackoverflow.com/questions/6025132/when-to-prefer-and-over-andalso-in-guard-tests)। – kay

उत्तर

12

यह (1213 ए तक) होता था कि andalso और orelse पूंछ रिकर्सिव नहीं थे। विवरण के लिए http://www.erlang.org/eeps/eep-0017.html देखें। मुझे नहीं लगता कि /orनए प्रोग्रामों का उपयोग करने का एक अच्छा कारण है।

+0

दिलचस्प लिंक। जवाब के लिए धन्यवाद! – missingfaktor

4

और/या ऑपरेटर बस बहुत पुराने हैं। Andalso/orelse ऑपरेटरों बाद में जोड़ रहे हैं। एक उपयोग केस और/या आज हो सकता है जब आप बस कुछ सरल बूलियन ऑपरेशन करना चाहते हैं और क्षैतिज स्थान संभवतः कुछ मशीन चक्रों को सहेजने से अधिक महत्वपूर्ण है। उदाहरण के लिए:

X = Y and (A or B), 

बजाय

X = Y andalso (A orelse B), 

आंखों पर थोड़ा आसान है।

पिछड़ा संगतता के कारणों के लिए, मूल के व्यवहार को बदलने और/या शॉर्ट-सर्किटिंग बनना संभव नहीं था, इसलिए नए कीवर्ड की आवश्यकता थी। नाम और भी/मानक मानक एमएल से आते हैं।

5

मैं उन्हें अलग अलग बातें कर के रूप में देखते हैं और उन्हें इस तरह के रूप में उपयोग:

  • and/or के रूप में तार्किक ऑपरेटरों मैं कहाँ चाहते तार्किक मानों की तुलना करने के लिए। चूंकि वे सख्त हैं, मैं स्वचालित रूप से टाइप-चेकिंग प्राप्त करता हूं और KNOW ठीक कहलाता है।
  • andalso/नियंत्रण के लिए orelse, ज्यादा && की तरह और सी
  • में ||

देखकर त्रुटियों erlang में परिभाषित कर रहे हैं मुझे लगता है यह पता है कि निष्पादित किया गया है अच्छा है और यह कैसे चला गया।

+0

1. 'एंडलसो 'और' orelse' का उपयोग तार्किक ऑपरेटरों के रूप में भी किया जा सकता है। 2. मुझे टाइप-चेकिंग के बारे में कुछ समझ में नहीं आया। 3. जिसे बुलाया गया है उसे जानना चाहिए पारदर्शी पारदर्शी अभिव्यक्तियों से कोई फर्क नहीं पड़ता; यह साइड इफेक्ट्स के संदर्भ में केवल प्रासंगिक है। – missingfaktor

+0

मुझे लगता है कि रॉबर्ट क्या कह रहा है कि कभी-कभी आप सभी ऑपरेटरों का मूल्यांकन करना चाहते हैं ताकि वे अपवाद उठा सकें, भले ही वे भविष्यवाणी के मूल्यांकन के लिए आवश्यक न हों। यह एक अच्छा मुद्दा है। – dsmith

+0

@dsmith: हाँ, दोनों और यह जांचने के लिए कि वे वास्तव में बूलियन मान लौटते हैं। मैं शायद अत्यधिक सावधानी बरत रहा हूं लेकिन जितनी जल्दी हो सके त्रुटियों को पकड़ना अच्छा होता है। – rvirding

संबंधित मुद्दे

 संबंधित मुद्दे