基函数foldl :: (a -> b -> a) -> a -> [b] -> a 具有三个参数。
初始值
具有类型的卷积函数a -> b -> a
列表
让我们以foldl plus 0 [1, 2, 3].plus a b = a + b
结果将是0 + 1 + 2 + 3。
括号可能会有所帮助((0 + 1) + 2) + 3。
如果您显示此方法的实现,也许会更清楚
foldl f a [] = a -- для пустого списка результат равен начальному значению
foldl f a x:xs = foldl f new_a xs -- для не пустого мы вызываем ту же функцию
-- с новым начальным значением и передаем только
-- хвост списка
where new_a = f a x -- новое начальное значение мы получаем путем
-- комбинации старого с первым элементом списка
基函数
foldl :: (a -> b -> a) -> a -> [b] -> a
具有三个参数。a -> b -> a
让我们以
foldl plus 0 [1, 2, 3]
.plus a b = a + b
结果将是
0 + 1 + 2 + 3
。括号可能会有所帮助
((0 + 1) + 2) + 3
。如果您显示此方法的实现,也许会更清楚
该方法的结束版本
1
通过从列表的第一个元素开始对非空列表进行操作