А ленивые фолды по-любому покажут спейс-личико ;) foldl идёт по списку и строит левое поддерево ((0+1)+2)+...). foldr заменяет x:xs на x+(foldr (+) 0 xs), но поскольку корневой + энергичный, то он спровоцирует вычисление (начиная со строительства) всего правого поддерева. Вот если бы вместо + было что-нибудь ленивое - например, конструктор структуры или функция с условием, - то личико бы не открылось.
no subject
Date: 2008-02-10 10:05 pm (UTC)foldl идёт по списку и строит левое поддерево ((0+1)+2)+...).
foldr заменяет
x:xs
наx+(foldr (+) 0 xs)
, но поскольку корневой + энергичный, то он спровоцирует вычисление (начиная со строительства) всего правого поддерева.Вот если бы вместо + было что-нибудь ленивое - например, конструктор структуры или функция с условием, - то личико бы не открылось.