मैं count down game पर इस हैकेल व्याख्यान पर जा रहा हूं, मुझे किसी भी हैकेल को नहीं पता लेकिन मैं समस्या में घुसपैठ कर रहा हूं, मैं अपने कोड को क्लोजर पर बंद करने की कोशिश कर रहा हूं।क्लोजर के लिए हास्केल
इस, भाग मैं कुछ मैं हास्केल में नहीं मिलता होना चाहिए अटक गया है
split :: [a] -> [([a],[a])]
split [] = [([],[])]
split (x:xs) = ([],x:xs) : [(x:ls,rs) | (ls,rs) [([a],[a])]
nesplit = filter ne . split
ne :: ([a],[b]) -> Bool
ne (xs,ys) = not (null xs || null ys)
exprs :: [Int] -> [Expr]
exprs [] = []
exprs [n] = [Val n]
exprs ns = [e | (ls,rs)
मैं अपने खुद के विभाजन को देखते हुए 1 2 3 4 इसे बाहर थूक है,
(((1) (2 3 4)) ((1 2) (3 4)) ((1 2 3) (4)))
(defn split [v]
(if (= (count v) 1)
(list (first v))
(map #(list (take % v) (drop % v)) (range 1 (count v)))))
(defn exprs [v]
(if (= (count v) 1)
v
(map #(concat (exprs (first %)) (exprs (second %))) v)))
(exprs (split [1 2 3 4]))
है कि मुझे देता है,
java.lang.IllegalArgumentException: Don't know how to create ISeq from: java.lang.Integer
कर सकते हैं एक nyone मुझे बताओ कि मैं हैकेल कोड से क्या याद कर रहा हूँ?
उनकी पूर्ण कोड लिस्टिंग here उपलब्ध है।
क्या आपके हास्केल कोड की अंतिम पंक्ति एक समापन वर्ग गुम है ब्रैकेट? –
मैंने यहां एक ही समस्या को देखा, हालांकि ग्राहम हटन के सुरुचिपूर्ण समाधान की तरह अधिक बलवान बल। देखें http://www.fatvat.co.uk/2009/02/countdown.html –
बहुत धन्यवाद जेफ, मैं वैसे भी ब्रूट फोर्स विधि की कोशिश कर रहा था। –