कैसे (-) प्रतीत होता है कि दो अलग-अलग प्रकार हो सकते हैं?


12

जब मैं टाइप करता हूँ, ghci में

:t (-)

यह जानने के लिए कि (-)यह किस प्रकार का है

(-) :: Num a => a -> a -> a

हालाँकि, जब मैं लिखता हूं तो -1हैसेल एक नंबर देता है, जो कि लगता है कि (-)प्रकार का है Num a => a -> a। कैसे (-)प्रतीत होता है कि दो अलग-अलग प्रकार हैं?

जवाबों:


15

यह भाषा में एक डिजाइन निर्णय था। -1एक संख्या है, लेकिन इस संदर्भ में इसका उपयोग फ़ंक्शन से संबंधित नहीं है(-) । (जैसा कि उनके जवाब में अकदरी का उल्लेख है, यह उपयोग फ़ंक्शन से संबंधित है negate।) कुछ ऐसे समझौते हैं जो काम करने की अनुमति देते हैं:

  1. आप (-)ऑपरेटर का एक सही टुकड़ा नहीं ले सकते । वर्कअराउंड के रूप में, हास्केल subtractफ़ंक्शन प्रदान करता है ।

  2. जब तक यह एक असाइनमेंट की शुरुआत में नहीं होता (उदाहरण के बाद =या सीधे ->) बिना आप कोष्ठक के बिना एक नकारात्मक पूर्णांक नहीं लिख सकते । यह एक पार्स त्रुटि पैदा करता है:

    let x = 8 * -1

    इसके बजाय, इसे लिखा जाना चाहिए

    let x = 8 * (-1)

    हालाँकि, यह ठीक है:

    let x = -1 * 8

इन्हें भाषा के डिजाइनरों के लिए उचित व्यापार माना जाता था।


8

यह उत्तर पहले से ही हैस्केल -विकी में उतरता है , यह बताता है

अनिल माइनस प्रिल्यूड फ़ंक्शन के लिए सिंटैक्टिक शुगर है negate

इसलिए फ़ंक्शन (-)हमेशा a - bफ़ंक्शन होता है और यदि आप कोड लिखते हैं let x = -yतो कंपाइलर इसे ट्रांसलेट कर देगा let x = negate y


7

हास्केल में यूनरी माइनस विशेष है। जैसा कि रिपोर्ट की धारा 3.4 में कहा गया है :

विशेष रूप उपसर्ग निषेध को दर्शाता है, हास्केल में एकमात्र उपसर्ग ऑपरेटर, और के लिए वाक्यविन्यास है । बाइनरी ऑपरेटर आवश्यक रूप से प्रस्तावना की परिभाषा को संदर्भित नहीं करता है ; यह मॉड्यूल प्रणाली द्वारा पलटाव हो सकता है। हालांकि, यूनीली हमेशा प्रील्यूड में परिभाषित फ़ंक्शन को संदर्भित करेगा । ऑपरेटर के स्थानीय अर्थ और अनार्य नकार के बीच कोई संबंध नहीं है ।-enegate (e)---negate-


2
एसओ पर एक-वाक्य के उत्तर हतोत्साहित किए जाते हैं, क्योंकि उनकी सामग्री के सारांश के बिना लिंक होते हैं, क्योंकि वे टूट सकते हैं।
एंड्रयू रे

जैसा कि मैं मान सकता हूं कि विकी / ट्यूटोरियल / यूट्यूब वीडियो की तुलना में रिपोर्ट / मानकों के लिंक भी बहुत अधिक हैं।
बिप्लब

@ बिप्लब हां। लिंक-ओनली उत्तरों के साथ समस्या लिंक लक्ष्य की गुणवत्ता नहीं है, बल्कि लिंक सड़ने का जोखिम है। यदि आपने रिपोर्ट के संबंधित अनुभाग में प्रतिलिपि बनाई है, तो आपका उत्तर ठीक होगा।
जोसेफ सिबल-रिनेटेट मोनिका
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.