अनुप्रयोगी functor शैली:
import Control.Applicative
addLists xs ys = getZipList $ (+) <$> ZipList xs <*> ZipList ys
ध्यान दें कि यह इतना बदसूरत है क्योंकि वहाँ सूची एक अनुप्रयोगी functor बनाने के लिए दो तरीके हैं। पहला (और आईएमएचओ कम उपयोगी) तरीका सभी संयोजनों को लेना है, और इस तरह से "मानक" बन गया है, इसलिए (+) <$> [1,2] <*> [30,40]
[31,41,32,42]
है। दूसरी तरफ सूचियों को ज़िपित करना है क्योंकि हमें यहां आवश्यकता है, लेकिन जैसा कि आपके पास प्रति प्रकार केवल एक प्रकार का वर्ग उदाहरण हो सकता है, हमें सूचियों को ज़िप सूची में लपेटना होगा, और getZipList का उपयोग करके परिणाम को खोलना होगा।
बीटीडब्ल्यू: 'एड = uncurry (+)'। यह भी ध्यान रखें कि प्रश्न 'zipWith' क्वेरी के लिए [Hoogle] (http://haskell.org/hoogle/) पर पहली हिट है ['(a -> b -> c) -> \ [a \] - > \ [बी \] -> \ [सी \] '] (http://haskell.org/hoogle/?hoogle=%28a+-%3E+b+-%3E+c%29+-%3E+%5Ba% 5D + -% 3E +% 5BB% 5 डी + -% 3E +% 5Bc% 5D)। – ephemient
धन्यवाद ephemient, मैं अगली बार Hoogle पहले कोशिश करेंगे। –
@TomMD, मैं आपकी टिप्पणी के पहले भाग को समझ नहीं पा रहा हूं। –