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

Alexandru Scvortov scvalex at gmail.com
Sat Apr 3 13:44:51 EDT 2010


Look at it from the inside, out.

What does const do?

Const is a function that takes two parameters and always returns the first 
one.  For instance, const True x is True, for all x.

What's \x -> map (const x) then? (or map.const in my case)

It's a function that takes something and maps all the elements in a list onto 
that something.  i.e. you say 1 [2, 3, 4]; it replies [1, 1, 1].

What's cycle [True, False]?

It's simply the list [True, False, True, False, ...].

What's (map (\x -> map (const x)) (cycle [True, False]))?

It's a list of functions that map their lists to lists of True or lists of 
False (alternatively).

And what does the zipWith ($) do?

It applies the functions we've just built onto the lists you give it.

Cheers,
Alex

On Saturday 03 April 2010 16:34:21 Maur Toter wrote:
> Thanks again!
> 
> The last part I cant understand:
> So I give it for example
> zipWith ($) (map (\x -> map (const x)) (cycle [True, False])) [[1,2],[3]]
> 
> Okay, because of ($) it takes the first element of the last part which is
> [1,2] and apply the function on it
> But how makes this: map (\x -> map (const x)) (cycle [True, False])
> [True,True] from [1,2]?
> Then he takes [3] but how makes [False] from that?
> 
> It easily can be that my functional programming knowledge isn't enough to
> understand this and maybe I misunderstood it already. But I hope I'll be
> able to do so..
> 
> Thanks:
> Maur Toter
> 
> so
> 
> On Sat, Apr 3, 2010 at 4:31 PM, Edward Z. Yang <ezyang at mit.edu> wrote:
> > Excerpts from Maur Toter's message of Sat Apr 03 10:29:34 -0400 2010:
> > > What does the ($) at zipWith?
> > 
> > ($) is function application
> > 
> > Prelude> :t ($)
> > ($) :: (a -> b) -> a -> b
> > 
> > Cheers,
> > Edward


More information about the Haskell-Cafe mailing list