[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