我有一个代码
g :: Int->Int->Int
g x y = x*2 - y
然后如果我调用foldl1 g [4,3,2,1]它会返回15,但我不知道它是如何返回15,有人能解释我为什么会这样吗?
答案 0 :(得分:4)
foldl1
首先将函数应用于列表的前两个元素,然后获取结果并将函数应用于它和第三个元素,然后获取结果并将函数应用于它和第四个元素,然后是结果和第五个元素,然后是第六个元素,依此类推,直到列表结束。
所以:
Step 1: g 4 3 = 4*2 - 3 = 5
Step 2: g 5 2 = 5*2 - 2 = 8
Step 3: g 8 1 = 8*2 - 1 = 15