将函数列表中的每个函数逐渐应用于某个值,累积结果的函数的名称是什么?

ren*_*ick 3 haskell

就像标题所说的那样.我已经实现了这个,但是这个函数可能已经有了一个通用的名称,并且存在于标准库中.

关于此功能的其他建议是受欢迎的.也许有更清洁的实施.

let transform x funcList = transform' x [x] funcList
        where transform' startVal accum funcList 
                   | null funcList = reverse accum
                   | otherwise = let result = (head funcList) startVal
                                     in transform' result (result:accum) $ tail funcList
Run Code Online (Sandbox Code Playgroud)

执行时,它执行以下操作:

> transform 2 [(2 + ),((-1) +),(3 *)]
[2,4,3,9]
Run Code Online (Sandbox Code Playgroud)

Lee*_*Lee 10

你可以用scanl以下方法定义它:

let transform = scanl (\v f -> f v)
Run Code Online (Sandbox Code Playgroud)

要么

let transform = scanl (flip ($))
Run Code Online (Sandbox Code Playgroud)