[Haskell-cafe] foldl in terms of foldr

Xingzhi Pan vengeance.storm at gmail.com
Tue Jan 26 10:44:11 EST 2010


On Tue, Jan 26, 2010 at 11:24 PM, Eduard Sergeev
<Eduard.Sergeev at gmail.com> wrote:
>
>
> Xingzhi Pan wrote:
>>
>> The first argument to foldr is of type (a -> b -> a), which takes 2
>> arguments.  But 'step' here is defined as a function taking 3
>> arguments.  What am I missing here?
>
> You can think of step as a function of two arguments which returns a
> function with one argument (although in reality, as any curried function,
> 'step' is _one_ argument function anyway):
> step :: b -> (a -> c) -> (b -> c)
>
> e.g. 'step' could have been defined as such:
> step x g = \a -> g (f a x)
>
> to save on lambda 'a' was moved to argument list.

Right.  But then step is of the type "b -> (a -> c) -> (b -> c)".  But
as the first argument to foldr, does it agree with (a -> b -> a),
which was what I saw when I type ":t foldr" in ghci?

> --
> View this message in context: http://old.nabble.com/foldl-in-terms-of-foldr-tp27322307p27324376.html
> Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com.
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>



--
Pan, Xingzhi
http://www.panxingzhi.net


More information about the Haskell-Cafe mailing list