2011-10-03 2 views
5

मिरांडा के साथ कोडिंग के साथ एक समस्या हो रही हूँ बस कार्यात्मक प्रोग्रामिंग करने के लिए एक नौसिखिया तो मेरे लिए मुश्किल थप्पड़ मारता है, तो Ive एक आसान गलती न तो मैं सीखनामिरांडा त्रुटि को एकजुट नहीं कर सकते [[चार]] लाइन पर [चार] के साथ 12

वैसे भी लाइन 12 पर एक त्रुटि प्राप्त करने के साथ, मेरे विचार के साथ यूनिफाइन चार के साथ समस्या होने के साथ यह जांचना है कि इसे शब्दकोश के साथ फ़िल्टर करके सही लिखा गया है, जो शब्दों की एक सूची और एक साथ जोड़े गए फ़ाइल से दूसरी सूची होगी

यह मेरी लाइन है 12

= [filter (= typed) ((read file) ++ dictionary)] 

और यह मेरा कार्यक्रम के बाकी अब तक

filename == [char] 
word == [ char ] 
dictionary :: [ word ] 



spell:: filename -> filename -> [ char ] 
look:: word -> filename ->[[[ char ]]] 


look typed file 
= [filter (= typed) ((read file) ++ dictionary)] 

dictionary = 
["aardvark","bell","camp","dictionary","editor","file","ground", 
"grounds","help","intelligent","joint","kettle","light","memory", 
"nettle","orange","quite","research","standard","terminal", 
"umbrella","violin","water","xenon","yellow","zoo","aaa","abb", 
"acc","add","aee"] 

इसलिए किसी को भी बाहर बिंदु सकता है जहां i'v गलत हो गया है?

+2

+1, यह बहुत अच्छा है। – Ingo

उत्तर

4

मैंने कभी मिरांडा का उपयोग नहीं किया है, लेकिन हास्केल का उपयोग किया है, ऐसा लगता है कि समस्या यह है कि आप एक स्ट्रिंग और तारों की एक सूची जोड़ने की कोशिश कर रहे हैं; हालांकि, मुझे लगता है कि कि ++ ही प्रकार के दो सूचियों की जरूरत है (हास्केल के रूप में):

(++) :: [a] -> [a] -> [a] 

लेकिन read file प्रकार [char] की है, और शब्दकोश प्रकार [[char]] की है।

प्रकार हस्ताक्षर में ++ के लिए इन स्थानापन्न की कोशिश प्रकार की त्रुटि का कारण बनता है:

(++) :: [char] -> [[char]] -> ?? -- type error!! 

शायद तुम शब्दों में (read file) विभाजित करने के लिए इससे पहले कि आप dictionary को संलग्न करना चाहते हैं। फिर आप [[char]] से [[char]] में संलग्न होंगे, जो ठीक काम करेगा।

नोट मैं मिरांडा बारे में कुछ पता नहीं है - यह उत्तर आपकी कोड, त्रुटि संदेश दिया, और हास्केल के साथ मेरा अनुभव (जहाँ मैं समान गलतियों की अधिक संख्या के द्वारा किए गए) को देख पर आधारित है। मिरांडा का उपयोग करने के लिए

+0

धन्यवाद यह देखने का प्रयास करेगा कि यह काम करता है या नहीं – user23012

संबंधित मुद्दे