2013-04-24 16 views
6

डिग्री में कोण के साथ काम करते समय, मैं एक पोस्टफिक्स ऑपरेटर के रूप में उपयोग करने के लिए डिग्री प्रतीक (°) परिभाषित करना चाहता हूं। वर्तमान में, मैं (GHCi में) इस लाइन का उपयोग करें:मैं हास्केल में पोस्टफिक्स ऑपरेटर को कैसे परिभाषित करूं?

let o = pi/180 

और इस तरह इसका इस्तेमाल:

tan(11*o) 

लेकिन मैं सिर्फ जाना चाहता हूँ:

tan 11° 

जो बहुत स्पष्ट है। डिग्री ऑपरेटर को 'tan' और अन्य कार्यों की तुलना में अधिक प्राथमिकता होनी चाहिए।

निकटतम मुझे मिल गया है है:

let (°) x _ = x*pi/180 

इस तरह इस्तेमाल किया:

tan(11°0) 

लेकिन डिफ़ॉल्ट पूर्वता का मतलब कोष्ठक अभी भी जरूरत है, और डमी संख्या के साथ, इस विकल्प नहीं है जो मैं वर्तमान में उपयोग करता हूं उससे भी बदतर।

+8

"डिग्री ऑपरेटर को 'तन' और अन्य कार्यों की तुलना में अधिक प्राथमिकता होनी चाहिए।" <- यह काम नहीं करेगा, फ़ंक्शन एप्लिकेशन भाषा विनिर्देश द्वारा उच्चतम प्राथमिकता है। –

+0

आप डिग्री का प्रतिनिधित्व करने वाले एक नए प्रकार के साथ एक नया संख्यात्मक प्रकार (डबल या जो भी लपेटना) परिभाषित नहीं करते हैं? निश्चित रूप से आपको डिग्री की "मॉड्यूलर" प्रकृति पर कुछ ध्यान देना होगा यदि आप समानता को परिभाषित करना चाहते हैं, आदि –

+0

हास्केल ऐसी भाषा नहीं है जहां आप लिखने के लिए उपयोग किए जाने वाले तरीके को संकलित कर सकते हैं यह। पर्ल या यहां तक ​​कि पायथन के विपरीत, हास्केल का इन्फिक्स सिंटैक्स वास्तव में बहुत ही कम-से-कम और सरल है, यह इतना अच्छी तरह से डिज़ाइन किया गया है कि यह सरल आधार भी बहुत ही कुशल शॉर्टैंड्स के लिए आश्चर्यजनक है, कई माता-पिता को छोड़ने के लिए, और आम तौर पर चीजों को काफी पठनीय बनाने के लिए। लेकिन बाद का बिंदु हिस्सा में है क्योंकि इन कठोर पार्सिंग नियम हैं। – leftaroundabout

उत्तर

3

fixity declarations देखें, जो आपको इन्फिक्स ऑपरेटरों की प्राथमिकता को बदलने की अनुमति देता है। सावधान रहें कि प्राथमिकता को बहुत अधिक सेट न करें, या अन्य ऑपरेटर अपेक्षित व्यवहार नहीं करेंगे।

उदाहरण के लिए:

infixl 7 ° 
(°) x _ = x*pi/180 

संपादित करें: आह, @Daniel फिशर का सही - क्योंकि समारोह आवेदन सर्वोच्च प्राथमिकता

11

आप नहीं कर सकते है इस आपकी आवश्यकताओं के लिए काम नहीं करेगा, कम से कम हास्केल में रिपोर्ट द्वारा परिभाषित किया गया है। हालांकि, a GHC extension that allows postfix operators है।

दुर्भाग्यवश यह आपको वह सब कुछ नहीं देता है जो आप चाहते हैं; विशेष रूप से, इसे अभी भी कोष्ठक की आवश्यकता होती है, क्योंकि यूनरी अस्वीकरण ऑपरेटर अक्सर करता है।

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