[Haskell-beginners] How to select items from one list depending on another

Alexey Levan exlevan at gmail.com
Wed Nov 10 11:08:09 EST 2010


2010/11/10 C K Kashyap <ckkashyap at gmail.com>:
> Hi,
> I have this problem at hand -
>
> Given two lists
>
> list1 = [0,1,2,0,1,4]
>
> list2 = [1,2,3,4,5,6]
>
> I need to take items from the second list only when the corresponding
> item in list1 is non-zero.
>
> list3 = map snd $ filter takeValid $ zip list1 list2 where
>                       takeValid (a,b) = a /= 0
>
> Is there a shorter way?

You can use list comprehenison and pattern matching here:

list3 = [xs | (0, xs) <- zip list1 list2]


More information about the Beginners mailing list