2011-04-02 8 views
7

क्या कोई तरीका है कि मैं words और unwords को हैकेल में डिलीमीटर प्रदान कर सकता हूं, इसे विभाजित करने और पाइथन में शामिल होने के समान?हास्केल: शब्द, unwords delimiter

उत्तर

4

नहीं, लेकिन वे क्रमशः Data.List.break और Data.List.intersperse के अनुप्रयोगों के अनुकूलित (अनुकूलित संस्करण) हैं।

pythonicSplit  :: String -> Char -> [String] 
pythonicSplit "" _ = [] 
pythonicSplit s c = let (r,rs) = break (== c) s 
         in r : pythonicSplit rs c 

pythonicJoin  :: [String] -> Char -> String 
pythonicJoin ss c = intersperse c ss -- or: flip intersperse 
+0

मैं पाठकों के लिए व्यायाम के रूप में एक स्ट्रिंग या कई पात्रों में विभाजित संस्करण छोड़ दूंगा, अगर केवल इसलिए कि यह मेरे सोने का समय है। :) लेकिन मैं ध्यान दूंगा कि आपको आवश्यक सभी टूल्स 'डेटा.लिस्ट' में हैं और बहु-चरित्र शामिल होने से पहले ही एक-चरित्र शामिल होता है। – geekosaur

+1

'intersperse' के बजाय बहु-वर्ण डिलीमीटर के लिए 'intercalate' भी देखें। – luqui

+1

आपकी 'पायथनिकप्लिट' गलत है। पहले शब्द के बाद, यह खाली तारों की एक अनंत सूची उत्पन्न करता है – newacct

11

कृपया यह भी मिलनसार पैकेज विभाजित पर एक नजर है। यह सभी प्रकार के विभाजन के लिए मॉड्यूल Data.List.Split प्रदान करता है।