- खाली सूची के लिए
Enum.all? फ़ंक्शन का रिटर्न मान true होता है
- Haskell का
all, Python का all, और Clojure का every? फ़ंक्शन भी बिल्कुल इसी तरह काम करता है
- खाली सूची के लिए true लौटाने पर implementation आसान हो जाती है
true && f(elem1) && f(elem2) ...
- लेकिन इसे इस तरह सिर्फ implementation की सुविधा के कारण नहीं बनाया गया
- यह logic में vacuous truth की परिभाषा के अनुरूप implement किया गया है
- vacuous truth को समझने के लिए material implication को देखना होगा
- अगर p false है, तो p → q हमेशा true होता है
- “अगर Statue of Liberty सियोल में है, तो Eiffel Tower पोहांग में है” यह कथन true है
- क्योंकि p यानी “Statue of Liberty सियोल में है” false है
- ऐसे material implication में p के false होने की वजह से कथन का बिना शर्त true हो जाना ही vacuous truth कहलाता है
- vacuous truth में खाली set के बारे में कोई भी proposition true हो जाती है
- उदाहरण के लिए, 'कमरे में मौजूद सभी मोबाइल फ़ोन बंद हैं'
- x कमरे में मौजूद सभी वस्तुएँ हैं
- P(x) है 'x एक मोबाइल फ़ोन है'
- Q(x) है 'x बंद है'
- क्योंकि x खाली है, P(x) false है। vacuous truth के अनुसार यह कथन हमेशा true हो जाता है.
- इसलिए खाली सूची के लिए
Enum.all? फ़ंक्शन का रिटर्न मान true होता है.
3 टिप्पणियां
सीखने को मिला, शेयर करने के लिए धन्यवाद।
गणितीय और computer science वाला approach ऐसा हो सकता है, लेकिन coding करते समय यह उलझन पैदा करता है, इसलिए इसे इस्तेमाल न करना ही बेहतर लगता है, haha।
खासकर
ifstatement में empty list को False माना जाता है, इसलिए बहुत कन्फ्यूजन होता है।Python के अनुसार यह नीचे जैसा है।
all([]) == True
all([[]]) == False
इसलिए मैं कोड पढ़ने वाले व्यक्ति के लिए conditions को स्पष्ट रूप से लिखने वाला तरीका पसंद करता हूँ।
if not arr:की बजायif len(arr) == 0:जैसा।if not flag:के बजायif flag is False:जैसा उदाहरण भी हो सकता है।मेरे मानदंड से
all([[]])की जगहall([शर्त for ... in []])के रूप में फिर से लिखना कोड को और बेहतर ढंग से पढ़ने योग्य बनाएगा।आह~ Python में empty list
falsy valuesहोती है, इसलिएall([[]])का return valueFalseआता है। हर language में Truthy, Falsy values अलग होती हैं, इसलिए दूसरी language इस्तेमाल करते समय कभी-कभी एक-आध बार गलती हो जाती है। :)जानकारी के लिए, Elixir में सिर्फ
nilयाfalseही Falsy values होते हैं, इसलिएEnum.all?([[]])का valuetrueआता है।