จะให้ฉันใช้แผนที่อย่างถูกต้องในภาษา haskelllanguage

0

คำถาม

ฉันกำลังพยายามทำให้โปรแกรมนั่นต้องใช้จดหมายและกลายเป็นว่าจดหมายเข้า รหัส. ที่ Morse โต๊ะก็คือให้เช่นเดียว 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)

ฉัน ต้อง ใช้แผนที่จาก Prelude. นี่คือของฉันรหัสดังนั้นห่างไกล:

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 Strings.

คุณทำให้สามารถใช้ได้ 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

นี่คือรายละเอียดของ excercise(เวลาอย่างน้อยแปล):"เขียนฟังก์ชันที่ต้องใช้อักขระและด้วยความช่วยเหลือขอ morseTab มันกลายเป็นมันเป็นรหัสมอส คุณสามารถเดาว่านั่นคือตัวละครใน morseTab โต๊ะ ใช้ฟังก์ชันสูงขึ้น(บนแผนที่). (ช่วย:บนอินเทอร์เน็ตเห็นว่าการค้นหาและ fromJust ทำ)charToCode::[(อักขระ,ข้อความ)]->อักขระ->ข้อความ". นี่ฉันรู้สึกเหมือนฉันต้องใช้แผนที่ค้นหาและ fromJust:/
Myxy290

@BarnaMikler:คุณจะต้องใช้แผนที่จะแปลงทั้งหมดข้อความเข้า morse...
Willem Van Onsem

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่