दो तर्क का एक Haskell समारोह को फिर से लिखना कर रहा है हास्केल में निम्नलिखित समारोहमैं कैसे बात से मुक्त करने के लिए शैली
agreeLen :: (Eq a) => [a] -> [a] -> Int
agreeLen x y = length $ takeWhile (\(a,b) -> a == b) (zip x y)
मैं कैसे लिखने के लिए 'मुहावरेदार' हास्केल है, जो लगता है जानने के लिए कोशिश कर रहा हूँ .
और $
कोष्ठक के बजाय, और जहां भी संभव हो पॉइंटफ्री कोड पसंद करना पसंद करते हैं। मैं स्पष्ट रूप से x
और y
का उल्लेख करने से छुटकारा नहीं पा रहा हूं। कोई विचार?
मुझे लगता है कि मुझे दो तर्कों के किसी भी फ़ंक्शन को पॉइंटफ्रीइंग के साथ एक ही समस्या होगी।
बीटीडब्ल्यू, यह सिर्फ अच्छे कोड लिखने की तलाश में है; कुछ "होमवर्क व्यायाम" इसे पॉइंटफ्री बनाने के लिए जो कुछ भी लेता है उसका उपयोग करें।
धन्यवाद।
(जोड़ा गया टिप्पणी) उत्तर के लिए धन्यवाद। आपने मुझे विश्वास दिलाया है कि यह फ़ंक्शन पॉइंटफ्री से लाभ नहीं उठाता है। और आपने मुझे अभिव्यक्तियों को बदलने के अभ्यास के लिए कुछ बेहतरीन उदाहरण भी दिए हैं। यह अभी भी मेरे लिए मुश्किल है, और वे हास्केल के रूप में आवश्यक होने लगते हैं के रूप में संकेत तुम भी इस्तेमाल कर सकते हैं सी
मुझे hlint (http://community.haskell.org/~ndm/darcs/hlint/hlint.htm) मिला जो मुझे अभिव्यक्ति लिखने के अन्य तरीकों को सीखने में मदद करने में बहुत मूल्यवान है। और $। – mhwombat