[Haskell-cafe] A function that makes list of Bool lists from list of Int lists

Edward Z. Yang ezyang at MIT.EDU
Sat Apr 3 10:13:48 EDT 2010


Excerpts from Maur Toter's message of Sat Apr 03 09:54:26 -0400 2010:
> I am new with Haskell so I think this will be a pretty dumb question.
> I would like to make a function that makes this:
> 
> listbool :: [[Int]] -> [[Bool]]
> 
> in this way:
> listbool [[1,2],[3,4]] == [[True, True],[False, False]]
> listbool [[1],[5,5],[5,4],[2]] == [[True],[False, False],[True, True],
> [False]]
> 
> So always True from the elements of the first list, False from the elements
> of the second one, etc...

Sure you can do this.  In fact, the type can be more general:

listbool :: [[a]] -> [[Bool]]
listbool xs = zipWith ($) (map (\x -> map (const x)) (cycle [True, False])) xs

Cheers,
Edward


More information about the Haskell-Cafe mailing list