Having trouble with recursion and Type mismatching in Haskell -


<पूर्व> - genrep genrep :: a - & gt; इंट - & gt; [ए] जीनरूप एक एन | N == 0 = [] | अन्यथा = a ++ genrep (a-n-1))

इसलिए मैं एक सरल प्रतिकृति फ़ंक्शन में हैस्केल बनाने की कोशिश कर रहा हूं - जो कि एक सामान्य प्रकार ले लो और उसे एन बार दोहराएं हालांकि, उपरोक्त काम करने के लिए प्रतीत नहीं होता है मैं यह त्रुटि कोड प्राप्त करता हूं:

  *** अभिव्यक्ति: a ++ genrep (a - n - 1) *** शब्द: genrep (a (n - 1)) ** * प्रकार: इंट - & gt; [बी] *** मेल नहीं खाता: [ए]   

क्या कोई मुझे बता रहा है कि क्या हो रहा है? फ़ंक्शन मेरे लिए सही दिखता है, लेकिन हास्केल को यह पसंद नहीं लगता।

इसे बदलें: < / P> <पूर्व> | अन्यथा = a ++ genrep (a (n-1))

इसे करने के लिए:

  | अन्यथा = [ए] ++ genrep a (n-1)   

आपकी वर्तमान संस्करण कॉल को genrep केवल एक तर्क के साथ recursively कॉल करता है जब दो की अपेक्षा होती है अतिरिक्त कोष्ठक की आवश्यकता नहीं है।

संपादित करें: मैं सिर्फ a के बजाय [a] को शामिल करने के लिए उपरोक्त कोड को तय किया है। उसके लिए माफ़ करना। यह वास्तव में यही है जो मैंने आपको सुझाव दिया था:

  genrep :: a - & gt; इंट - & gt; [ए] जनरेट ए 0 = [] जीनप्रोफेर ए एन = ए: जीनप्र ए (एन -1)    

Comments