2012-03-22 13 views
10

क्या हैस्केल में कुछ फ़ंक्शन है जो एक सूची ट्रैवर्सल में फ़िल्टर (x पी, फिल्टर (not.p) xs फ़िल्टर करें) (यहां दो हैं) या इस तरह के समारोह के लिए कार्यात्मक प्रोग्रामिंग में कुछ आम नाम है?मानक नाम (फ़िल्टर पी एक्सएस, फ़िल्टर (not.p) xs)

उत्तर

33

प्रकार में पहला रूप में है कि आप की जरूरत है:

Prelude> :t \p xs -> (filter p xs, filter (not . p) xs) 
\p xs -> (filter p xs, filter (not . p) xs) 
    :: (a -> Bool) -> [a] -> ([a], [a]) 

Hoogle is your friend:

Prelude> :hoogle (a -> Bool) -> [a] -> ([a], [a]) 
Prelude break :: (a -> Bool) -> [a] -> ([a], [a]) 
Prelude span :: (a -> Bool) -> [a] -> ([a], [a]) 
Data.List break :: (a -> Bool) -> [a] -> ([a], [a]) 
Data.List partition :: (a -> Bool) -> [a] -> ([a], [a]) 
Data.List span :: (a -> Bool) -> [a] -> ([a], [a]) 

अब कार्यों की कोशिश:

Prelude> break odd [1..10] 
([],[1,2,3,4,5,6,7,8,9,10]) 
Prelude> span odd [1..10] 
([1],[2,3,4,5,6,7,8,9,10]) 
Prelude> import Data.List 
Prelude Data.List> partition odd [1..10] 
([1,3,5,7,9],[2,4,6,8,10]) 
+3

+1 यह दिखाने के लिए कि इसे स्वयं कैसे ढूंढें। –

+2

साइट बनाने के लिए कौन जा रहा है "मुझे आपके लिए होगल करें"? –

+2

यहां आपको ghci में ': hoogle' कमांड कैसे मिलता है: http://www.haskell.org/haskellwiki/Hoogle#GHCi_Integration – amindfv

0

मुझे लगता है कि आप डेटा चाहते हैं। लिस्टपार्टिशन उदा।

partition (>2) [1,2,3,4,5] 

परिणाम ([3,4,5], [1,2])

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