Haskell foldl1它是如何工作的?
我有密码Haskell foldl1它是如何工作的?,haskell,Haskell,我有密码 g :: Int->Int->Int g x y = x*2 - y 如果我调用foldl1 g[4,3,2,1],它会返回15,但我不知道它是如何返回15的,有人能解释一下为什么会这样吗?foldl1首先将函数应用于列表的前两个元素,然后获取结果并将函数应用于它和第三个元素,然后获取结果并将函数应用于它和第四个元素,然后应用于结果和第五个元素,然后应用于第六个元素,依此类推,直到列表结束 因此: foldl1首先将函数应用于列表的前两个元素,然后获取结果并将函数应用于它
g :: Int->Int->Int
g x y = x*2 - y
如果我调用foldl1 g[4,3,2,1],它会返回15,但我不知道它是如何返回15的,有人能解释一下为什么会这样吗?
foldl1
首先将函数应用于列表的前两个元素,然后获取结果并将函数应用于它和第三个元素,然后获取结果并将函数应用于它和第四个元素,然后应用于结果和第五个元素,然后应用于第六个元素,依此类推,直到列表结束
因此:
foldl1
首先将函数应用于列表的前两个元素,然后获取结果并将函数应用于它和第三个元素,然后获取结果并将函数应用于它和第四个元素,然后是结果和第五个元素,然后是第六个元素,依此类推,直到列表结束
因此:
元问题:你是这本书的作者吗?如果是这样的话,我建议你重新发布它的
foldPairs
部分——关于它有一些非常有趣的观点,我正要完成一个关于它们的回答……当你删除的时候,我也正在编辑你问题的答案。元问题:你是这本书的作者吗?如果是这样的话,我建议你重新发布它的foldPairs
部分——关于它有一些相当有趣的观点,我正要完成一个关于它们的回答……当你删除时,我也正在编辑你问题的答案。一个有用的标识(我想)是foldl1f(x:xs)==foldlfxxs
(foldlf[]
未定义)。@chepner虽然这对一个有经验的程序员(或数学家)来说是一个有用的身份,但我认为,通过他们的问题来判断他们的技能/知识水平,这对OP几乎没有帮助。我不确定这个问题是关于折叠方面,还是具体来说是关于折叠方面。一个有用的身份(我认为)是foldl f(x:xs)==foldl f x xs
(foldl f[]
未定义)。@chepner虽然这对一个有经验的程序员(或数学家)是一个有用的身份,但我认为这对OP几乎没有帮助,通过他们的问题来判断他们的技能/知识水平。我不确定这个问题是否与折叠方面有关,或者具体地说是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