12 पॉइंट द्वारा ohyecloudy 2023-12-17 | 3 टिप्पणियां | WhatsApp पर शेयर करें
  • खाली सूची के लिए 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 टिप्पणियां

 
tapu1125 2023-12-18

सीखने को मिला, शेयर करने के लिए धन्यवाद।
गणितीय और computer science वाला approach ऐसा हो सकता है, लेकिन coding करते समय यह उलझन पैदा करता है, इसलिए इसे इस्तेमाल न करना ही बेहतर लगता है, haha।
खासकर if statement में empty list को False माना जाता है, इसलिए बहुत कन्फ्यूजन होता है।

Python के अनुसार यह नीचे जैसा है।
all([]) == True
all([[]]) == False

 
p0rygon 2023-12-18

इसलिए मैं कोड पढ़ने वाले व्यक्ति के लिए conditions को स्पष्ट रूप से लिखने वाला तरीका पसंद करता हूँ।
if not arr: की बजाय if len(arr) == 0: जैसा।
if not flag: के बजाय if flag is False: जैसा उदाहरण भी हो सकता है।

मेरे मानदंड से all([[]]) की जगह all([शर्त for ... in []]) के रूप में फिर से लिखना कोड को और बेहतर ढंग से पढ़ने योग्य बनाएगा।

 
ohyecloudy 2023-12-18

आह~ Python में empty list falsy values होती है, इसलिए all([[]]) का return value False आता है। हर language में Truthy, Falsy values अलग होती हैं, इसलिए दूसरी language इस्तेमाल करते समय कभी-कभी एक-आध बार गलती हो जाती है। :)

जानकारी के लिए, Elixir में सिर्फ nil या false ही Falsy values होते हैं, इसलिए Enum.all?([[]]) का value true आता है।