[Haskell-beginners] Problem specifying fst in tuple from list in filter

smekesis at csd.auth.gr smekesis at csd.auth.gr
Thu Jan 2 16:06:36 UTC 2014


You probably want something like the following:

filter (\(index, char) -> index == 0) $ zip [0..] ['A'..'Z']

Functions can be defined anonymously via a lambda abstraction (e.g.  
\(index, char) -> index == 0).

Stavros Mekesis.


Quoting Angus Comber <anguscomber at gmail.com>:

> I can generate a tuple of (index,character) like this:
> zip [0..] ['A'..'Z']
>
> To filter on an element in the list I can do:
>
> filter (== (0,'A')) $ zip [0..] ['A'..'Z']
>  > [(0,'A')]
>
>
> But that is very basic, I really want to select on index value (ie first
> item in pair). How do I specify the first part of tuple:
>
> filter (fst == 0) $ zip [0..] ['A'..'Z']
>
> this doesn't work.
>
>     Couldn't match expected type `(a1, Char) -> Bool'
>                 with actual type `Bool'
>     In the first argument of `filter', namely `(fst == 0)'
>     In the expression: filter (fst == 0)
>     In the expression: filter (fst == 0) $ zip [0 .. ] ['A' .. 'Z']





More information about the Beginners mailing list