है, मैं एक ऐसा फ़ंक्शन बनाने की कोशिश कर रहा हूं जो स्ट्रिंग से प्रत्येक n'th तत्व को छोड़ देता है।हास्केल - फ़ंक्शन में एक खाली वर्ण
dropEvery :: String -> Int -> String
dropEvery str n = map (\(char, indx) -> if indx `mod` n /= 0 then char else ' ') (zip str [1..])
अभी यह बस हर n'th तत्व एक स्थान के साथ बदलता है, लेकिन मैं क्या "और" के बाद डाल करने के लिए अगर मैं इसे एक "खाली चार" वापस करना चाहते चाहिए। मैं समझता हूं कि ऐसी चीज हास्केल में मौजूद नहीं है, इसलिए सवाल यह है कि - मुझे कुछ भी वापस न करने के लिए हास्केल को कैसे बताना चाहिए और बस अगले चार पर जाएं?
मैंने "अन्य]" के बाद "[]" डालने का प्रयास किया, लेकिन निश्चित रूप से टाइप त्रुटियों को समाप्त कर दिया। concatMap एक अच्छा विचार है। –
@ राउलपिलेव समस्या यह मानने से आती है कि "खाली 'चार' कहा जाता है। यह एक "खाली' Int' "या" खाली 'बूल' जैसा होगा, आपके पास' Int' हो सकता है जो 0 है, लेकिन ऐसा कोई नहीं है जिसके पास कोई मूल्य न हो (न कि 'अपरिभाषित' की गणना न हो) । खालीपन के लिए, आपको एक कंटेनर चाहिए। स्ट्रिंग्स कंटेनर हैं, क्योंकि वे केवल 'चर' की एक सूची हैं, इसलिए एक फ़ंक्शन '(चार, Int) -> [char]' के साथ, आप '[char, int) पर' concatMap' का उपयोग कर सकते हैं। ] एक '[चार] 'बाहर निकलने के लिए। – bheklilr