आपको केवल गार्ड के सामने रिक्त स्थान जोड़ने और कोड ठीक काम करने की आवश्यकता है।
pow1 b e
| (e == 0) = 1
| otherwise = b * pow1 b (e-1)
(user142019 पहले से ही इस समाधान में कहा गया है, फिर भी मुझे लगा कि एक स्पष्टीकरण समाधान को समझने की जरूरत है)
स्पष्टीकरण:
हास्केल अंतरिक्ष indentations का उपयोग करता है संरचना और के दायरे को नियंत्रित करने के यह कोड है अन्य प्रोग्रामिंग भाषाएं (उदाहरण के लिए जावा की तरह) ऐसा करने के लिए घुंघराले ब्रैकेट पर भरोसा करते हैं, हास्केल के बजाय इंडेंटेशन हैं।
आपका कोड काम नहीं करता है क्योंकि हास्केल फ़ंक्शन परिभाषा की तुलना में फ़ंक्शन बॉडी को गहरे इंडेंटेशन स्तर पर और समान स्तर पर अन्य फ़ंक्शन परिभाषाओं की अपेक्षा करता है। एक ही इंडेंटेशन स्तर पर किसी भी नई लाइन को एक नई फ़ंक्शन परिभाषा के रूप में व्याख्या करने का प्रयास किया जाएगा, जिन्हें गार्ड |
से शुरू करने की अनुमति नहीं है, इसलिए आपको पार्स त्रुटि मिलती है।
मैक चरित्र कुंजी और न ही आपके टेक्स्ट एडिटर के साथ कुछ भी गलत नहीं है।
इंडेंटेशन के विषय पर: टैब काम नहीं करेंगे। तो आपको एक टैब वर्ण के बजाय 4 रिक्त स्थान (मैं पुनः प्रतिक्रिया दूंगा) डालने के लिए मैन्युअल रूप से रिक्त स्थान दर्ज करना होगा या अपने संपादक की टैब सेटिंग्स को बदलना होगा। (नोटपैड ++ इसे उदाहरण के लिए अनुमति देता है, यह हैस्केल के साथ उपयोग के लिए मेरी पसंदीदा पसंद है)।
स्रोत
2014-07-29 10:59:22
मैं टेक्स्टएडिट की बजाय हास्केल (वीम, एमैक्स, सब्लिमे टेक्स्ट 2) के लिए एक अच्छा संपादक का उपयोग करने की अत्यधिक अनुशंसा करता हूं। –