मैं हास्केल में नौसिखिया हूँ, और मैं सवाल है: मैं लिखना कोड:Haskell और स्ट्रिंग लंबाई
word_list = ["list", "lol", "wordword"]
check str = if head str == 'l' then tail str else str
average wl = (length $ concat $ map check wl) `div` length wl
इस कोड शब्द सूची में हर शब्द के पहले "l" प्रतीक को हटाना होगा, concat प्राप्त शब्द , शब्द गणना पर परिणाम स्ट्रिंग और div की लंबाई प्राप्त करें।
इसलिए इस कोड में मैं प्राप्त करना होगा: 13/3 = 4.333 ... ("listlolwordword" = 15, "istolwordword" = 13) लेकिन मैं प्राप्त केवल 4.
average :: [[Char]] -> Float
काम नहीं करते , मुझे त्रुटि मिलती है। मेरी गलती कहाँ है? पीएस। खेद मेरी अंग्रेजी, कृपया
वाह। बहुत बहुत धन्यवाद! पैटर्न मिलान के बारे में : यह अद्भुत है! मुझे हर दिन हैस्कल पसंद है :) –
@user: ध्यान दें कि concatMap भी है, इसलिए आपको 'संक्षिप्त $ map' नहीं करना है। –
और मुझे लगता है कि एक और स्पष्ट दृष्टिकोण संभवतः 'योग $ मानचित्र (लंबाई। चेक) wl' है (हालांकि संलयन संभवतः इस महत्वहीन को प्रस्तुत करता है) – alternative