Haskell 将函数列表应用于输入

Haskell 将函数列表应用于输入,haskell,functional-programming,Haskell,Functional Programming,我想对输入应用函数列表。 例如,如果我的函数列表是[(+1),(*3),(+(-2))],并且我的输入是5,我希望从右到左应用函数,因此输出将是10,用mkUltras注释解决: 根据方向,可以使用foldr或foldl来减少列表。 要应用函数user$。在本例中,表达式为:foldr($)5 [(+1),(*3),(+(-2))] 我的最终代码:succApply x n=foldr($)n x 输入示例: succApply [(+1),(*2),(+(-1))] 1 == 1 succAp

我想对输入应用函数列表。
例如,如果我的函数列表是
[(+1),(*3),(+(-2))]
,并且我的输入是
5
,我希望从右到左应用函数,因此输出将是
10

,用mkUltras注释解决:

根据方向,可以使用foldr或foldl来减少列表。 要应用函数user$。在本例中,表达式为:foldr($)5 [(+1),(*3),(+(-2))]

我的最终代码:
succApply x n=foldr($)n x

输入示例:

succApply [(+1),(*2),(+(-1))] 1 == 1
succApply [init, tail] [1..5] == [2,3,4]
succApply [(*2), id, (+1)] 5 == 12

您可以根据方向使用
foldr
foldl
来减少列表。要应用函数user
$
。在这种情况下,表达式是:
foldr($)5[(+1),(*3),(+(-2))]
我认为这与分配的副本不同,因为OP需要函数的组合。我投票决定重新开放。答案可能是
foldl1(.)[(+1),(*3),(+2))]$5
同意你的意见,相反的方向,我们需要不同的
f
,因为
foldl
签名。但是,使用
Data.List.foldl1'
在处理每个函数时强制求值。@mkUltra感谢你的帮助,我把答案贴出来作为答案,这样我就可以结束这个问题了。