मैं काम करने के लिए इस समारोह हो रही परेशानी का एक बहुत हो रही है:जोड़ने के फ़ंक्शन बनाएं हास्केल में: [स्ट्रिंग] -> स्ट्रिंग
concatenate :: [String] -> String
यह बस स्ट्रिंग की एक सूची लेने के लिए और एक भी वापस जाने के लिए डिज़ाइन किया गया है स्ट्रिंग जो सूची के प्रत्येक तत्व के सिर से पूंछ के संयोजन के परिणाम है। मैं map
, foldl
, और foldr
फ़ंक्शंस में रहने की कोशिश कर रहा हूं। मुझे लगता है कि मुझे पता है कि इन कार्यों की अवधारणा कितनी अच्छी तरह से करती है, लेकिन सबसे आम समस्या जो मैं चल रहा हूं वह यह है कि मुझे प्रकार का संघर्ष हो रहा है। जीएचसी उदाहरण के लिए [चार] की अपेक्षा करेगा, और मैं कोड में डाल दूंगा जो स्पष्ट रूप से मुझे [[चार]] का उपयोग करने के बिना इसका उपयोग करने की कोशिश कर रहा है।
उदाहरण के लिए: concatenate (x:xs) = foldr (++) x (concatenate xs)
और मैं निम्नलिखित संकलन त्रुटि मिलती है:
Couldn't match type `Char' with `[Char]'
Expected type: [[Char]]
Actual type: String
In the return type of a call of `concatenate'
In the third argument of `foldr', namely `(concatenate xs)'
In the expression: foldr (++) x (concatenate xs)
मैं बहुत हास्केल के लिए नई हूँ, इसलिए हंसना संकोच न करें। कठोरता की उम्मीद है, और स्वागत है, जब तक एक नौसिखिया के लिए एक स्पष्टीकरण फिट भी शामिल है। किसी भी और सभी मदद के लिए धन्यवाद।
और यह इतना आसान था ... धन्यवाद। सी से आने के बाद हास्केल में कार्यों को विकसित करने के लिए आवश्यक मानसिकता में जाना मेरे लिए बहुत मुश्किल है और लगभग 'संक्षिप्त' के बारे में, मुझे पता है कि यह अस्तित्व में है, लेकिन मैं अपने मूल संस्करण बनाकर इन बुनियादी कार्यों को समझने की कोशिश कर रहा हूं। यह अतीत में अन्य भाषाओं में मदद करना प्रतीत होता है। – UnworthyToast