मैं कैसे कर सकते हैं मानचित्र का उपयोग सही ढंग से हास्केल में

0

सवाल

मैं कोशिश कर रहा हूँ करने के लिए एक कार्यक्रम बनाने के लिए, लगता है कि एक पत्र और उस पत्र में मोर्स कोड. मोर्स तालिका में दिया जाता है, के रूप में अच्छी तरह के रूप में charToCode :: [(Char, String)] -> Char -> String

मैं भी उपयोग करने के लिए है देखने और fromJust प्रपत्र डेटा.शायद यह काम करने के लिए. पर संकलन मैं निम्न त्रुटि प्राप्त:

Couldn't match expected type [Maybe Char]
            with actual type Maybe String
    * In the second argument of 'map', namely '(lookup a f)'
      In the expression: map (fromJust) (lookup a f)
      In an equation for 'charToCode':
          charToCode f a = map (fromJust) (lookup a f)

मैं है का उपयोग करने के लिए नक्शे से प्रस्तावना. यहाँ है मेरे कोड इतनी दूर है:

morseTab :: [(Char, String)]
morseTab = [('A', ".-"), ('B', "-..."), ('C', "-.-."), ('D', "-.."), ('E', "."), ('F', "..-."), ('G', "--."), ('H', "...."),('I', ".."), ('J', ".---"), ('K', "-.-"), ('L', ".-.."), ('M', "--"), ('N', "-."), ('O', "---"), ('P', ".--."), ('Q', "--.-"), ('R', ".-."), ('S', "..."), ('T', "-"), ('U', "..-"), ('V', "...-"), ('W', ".--"), ('X', "-..-"), ('Y', "-.--"), ('Z', "--..")]
charToCode :: [(Char, String)] -> Char -> String
charToCode f a = map (fromJust) (lookup a f)

morseTab है एक निश्चित समारोह, मैं नहीं कर सकता यह परिवर्तन करने के लिए या तो.

haskell higher-order-functions maybe
2021-11-20 12:09:47
1

सबसे अच्छा जवाब

1

आप का उपयोग नहीं करना चाहिए map. परिणाम के lookup a f एक Maybe Stringनहीं , एक सूची के Maybe Stringएस.

आप इस प्रकार का उपयोग कर सकते हैं fromJust के साथ:

import Data.Maybe(fromJust)

charToCode :: [(Char, String)] -> Char -> String
charToCode f a = fromJust (lookup a f)

कहा जा रहा है, का उपयोग कर fromJust असुरक्षित है: यह खाते में नहीं ले करता है कि lookup a f वापस हो सकता है एक Nothing.

2021-11-20 12:14:24

मैं इस किया था पहली बार है, लेकिन मेरे गुरु इसे मना कर दिया, क्योंकि दुर्भाग्य से, मैं का उपयोग करने के लिए एक उच्च समारोह के साथ किसी भी तरह. उन्होंने सुझाव दिया मानचित्र समारोह
Myxy290

@BarnaMikler: मुझे लगता है कि यह अधिक है क्योंकि आप का उपयोग lookupहै , और क्योंकि fromJust कुछ अच्छा नहीं माना जाता है कोड डिजाइन: यह त्रुटि के मामले में lookup नहीं करता है कुछ भी खोजने के लिए.
Willem Van Onsem

यहाँ विवरण के अभ्यास(मोटे तौर पर अनुवाद): "लिखने के एक समारोह में ले जाता है कि एक चरित्र के साथ और मदद की morseTab यह मोर्स कोड में. आप मान सकते हैं, कि चरित्र में है morseTab तालिका. उपयोग एक उच्च समारोह (नक्शा). (मदद: इंटरनेट पर क्या देखते हैं, देखने और fromJust करते हैं) charToCode :: [(चर, स्ट्रिंग)] -> चार> स्ट्रिंग". इस से मुझे लगता है जैसे मैं करने के लिए मानचित्र का उपयोग,देखने और fromJust :/
Myxy290

@BarnaMikler: आप की आवश्यकता होगी करने के लिए मानचित्र का उपयोग अनुवाद करने के लिए एक पूरी स्ट्रिंग में मोर्स...
Willem Van Onsem

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में