Hello If you have a list of String for each record, use partition from Data.List, e.g.: import Data.List ( partition ) partitionBySize :: [[String]] -> ([[String]],[[String]]) partitionBySize = partition (\xs -> length xs < 10) -- for demo-ing: printShortsLongs :: ([[String]],[[String]]) -> IO () printShortsLongs (xs,ys) = do putStrLn "Shorts:" mapM_ print xs putStrLn "Longs:" mapM_ print ys demo1 = printShortsLongs $ partitionBySize [ ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10" ] , ["1", "2", "3", "4"] , ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10" ] , ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10" ] , ["1", "2", "3", "4"] ] On 9 February 2010 10:53, <legajid@free.fr> wrote:
Hi, i get a .csv file with two different record formats (too bad). The first one, identified by a "A" in the second field, contains 4 fields. The second one, identified by a "B", contains 10 fields.
In order to put them in lists, i use lines then break to get a list of lists. Then i want to filter this list, one for the A list, the other one for the B list. Unfortunately, the pattern for the A type contains 4 fields; when a type B list occurs (10 fields), i get a message concerning the pattern : Non-exhaustive patterns in lambda
How can i separate the two record formats?
Thanks, Didier _______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners