2011-02-05 8 views
5

पर स्ट्रिंग/कैरेक्टर शाब्दिक में अक्षीय त्रुटि मैं हास्केल प्रोग्रामिंग के लिए बिल्कुल नया हूं और मुझे यह समझने में परेशानी हो रही है कि मुझे अपने कोड में यह त्रुटि क्यों प्राप्त हो रही है।हास्केल: अक्षर 'i'

मेरी समस्या इस प्रकार है: कोई भी सकारात्मक पूर्णांक मुझे i = 2^n * k के रूप में व्यक्त किया जा सकता है, जहां के विषम संख्या है, यानी 2 गुना एक अजीब संख्या की शक्ति के रूप में है। हम i में एक्स के एक्सपोनेंट को कॉल करते हैं। उदाहरण के लिए, 40 में 2 का एक्सपोनेंट 3 है (क्योंकि 40 = 2^3 * 5) जबकि 42 में 2 का एक्सपोनेंट 1 है। यदि मैं खुद अजीब हूं, तो शून्य शून्य है। यदि, दूसरी तरफ, मैं भी हूं, इसका मतलब है कि इसे 2 से विभाजित किया जा सकता है। इसके तर्क में 2 के एक्सपोनेंट को समाप्त करने के लिए एक फ़ंक्शन एक्सपोनेंटऑफ दो लिखें।

मैं psuedocode समझते हैं और यह काफी सरल लगता है: रिकर्सिवली मैं 2 से विभाजित जब तक परिणाम अजीब है, कई बार विभाजन होता है की संख्या n

यहाँ है मेरे कोड (लाइन 31-32) है:

exponentOfTwo :: Int -> Int 
exponentOfTwo i = if odd i then 0 else 1 + exponentOfTwo (i 'div' 2) 

मैं त्रुटि प्राप्त कर रहा हूँ "स्ट्रिंग में शाब्दिक त्रुटि/चरित्र चरित्र पर शाब्दिक 'मैं'" लाइन 32 स्तंभ पर 62.

मैं हर जगह और अब तक इस त्रुटि के लिए एक समाधान के लिए खोज की कोशिश की है मुझे कोई भाग्य नहीं मिला

उत्तर

6

एकल उद्धरण (') से नहीं करने के लिए इन्फ़िक्स में एक समारोह का उपयोग करने के लिए, बैकटिक (`) के साथ उसके दोनों ओर,। उत्तरार्द्ध चरित्र अक्षर के लिए हैं, जो अच्छी तरह से केवल एक चरित्र लंबे हैं।

2

क्या सामान्य उद्धरणों के बजाय div बैकक्वॉट के आसपास के वर्ण हैं? उन्हें एक फ़ंक्शन नाम को इंफिक्स ऑपरेटर के रूप में उपयोग करने की अनुमति देने की आवश्यकता है। मैंने आपकी परिभाषा में बदल दिया और कोड मेरे लिए काम किया।

+0

ओह वाह यह एक आसान फिक्स था, मुझे अब बेवकूफ़ लगता है। मैं कभी नहीं जानता था कि इस तरह से होना था। आपका बहुत बहुत धन्यवाद! – Gus