2011-11-06 16 views
5

एक फ़ाइल में मुझे नियमित प्रीलूड (++) ऑपरेटर का उपयोग करने की आवश्यकता है और मैं भी (++) के लिए अपना व्यवहार लागू करना चाहता हूं। मैंने अपनी फ़ाइल के शीर्ष पर import Prelude hiding (++) का उपयोग किया है, अपना स्वयं का (++) ऑपरेटर परिभाषित किया है और अब नीचे मैं नियमित प्रीलूड (++) का उल्लेख करना चाहता हूं। मुझे यह कैसे हासिल होगा?हास्केल प्रलोइड छुपा, यूएनडीओ?

उत्तर

14

लिखें

import qualified Prelude 
अलावा

import Prelude hiding ((++)) 
कोड की शुरुआत में

, और Prelude.++ बारे में जहां प्रस्तावना में ++ की जरूरत है।

4

जैसा कि त्सुओशी इतो ने समझाया, आप ऑपरेटर को इसके मॉड्यूल नाम से अर्हता प्राप्त कर सकते हैं। हालांकि, (++) के अपने संस्करण को परिभाषित करके आप संभवतः अपने प्रोग्राम की रीडबिलिटी को बढ़ाना चाहते हैं, इसके बाद ऑपरेटर को उसके मॉड्यूल नाम के साथ अर्हता प्राप्त करना एक अजीब उपाय प्रतीत होता है।

बस इसे देखें: "abc" Prelude.++ "def" अब बदसूरत है।

क्यों न केवल नया ऑपरेटर बनाएं, जैसे <++> या 'एपेंड' जैसे इंफिक्स फ़ंक्शन?

+3

हाँ, असल में सवाल पर मेरी पहली प्रतिक्रिया "अपने कार्य को नाम न दें" (++) ', "हालांकि मैंने इसे पोस्ट नहीं किया था। लेकिन अगर पूछताछ लाइब्रेरी को अपने स्वयं के '++' के साथ लिख रहा है जिसका अर्थ प्रीलूड में '++' को प्रतिस्थापित करने के लिए है, तो पुस्तकालय के उपयोगकर्ता को आदर्श रूप से 'प्रीलूड ++' का उपयोग नहीं करना पड़ेगा। ऐसे (दुर्लभ) मामले में, एक ही नाम के साथ एक समारोह को परिभाषित करना समझ में आता है। अन्यथा, यह कुछ प्रचलित के साथ एक नाम संघर्ष के कारण थोड़ा सा समझ में आता है। –

+1

जब लोग प्रश्न से पहले पढ़ते हैं और जवाब देते हैं, तो "मुझे ऐसा न करें", विशेष रूप से जब प्रश्न अपनी प्रेरणा के बारे में पर्याप्त जानकारी नहीं देता है, तो यह मुझे परेशान करना शुरू कर रहा है। एक्सप्लोरर्स को एक्सप्लोर करने दें, उन्हें जो भी लगता है वह सही करने का प्रयास करें, उन्हें पहले देखें कि जब वे ऐसा करते हैं तो यह कितना बदसूरत होता है। जल्द ही वे मेरे * उत्तरों * पर इस टिप्पणी को लिखने की स्थिति में होंगे। :-) – luqui

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