Sam*_*Sam 1 haskell functional-programming
我有一个列表[a,b,c,d,e]和一个初始值u(显然a,b,c,d,e代表值).我想将一个函数应用于e和u,比方说f(e,u).然后我想应用函数f(d, f(e, u))然后f(c, f(d, f(e, u)))等我已经看过"迭代",但我无法弄清楚如何将迭代应用于列表中的每个元素.
我的列表:
a = take 101 (0 : concat [[(1%1),(2*k%1),(1%1)] | k <- [1..40]])
Run Code Online (Sandbox Code Playgroud)
我将如何在Haskell中实现这一点?
谢谢,山姆.
你想要的foldr :: (a -> b -> b) -> b -> [a] -> b.这是列表数据结构的一般折叠.把它看成是全部更换(:),并[]构造在列表中所提供的两个参数.
例如,如果我们将列表的数量相加[1, 2, 3],构造为1 : (2 : (3 : [])),我们可以找到替换的(:)和[],像+和0,即1 + (2 + (3 + 0)).因此,我们可以实现sum :: Num a => [a] -> a的foldr (+) 0.