我正在尝试编写一个函数,pipe
它需要一个数学函数列表,pipe [f1,...,fn] x
应该在哪里返回f1(f2(...(fn x)))
我已经将它设置为:
pipe :: [(a -> a)] -> (a -> a)
pipe fs = foldLeft f base fs
where
f a x =
base =
-- >>> pipe [] 3
-- 3
--
-- >>> pipe [(\x -> x+x), (\x -> x + 3)] 3
-- 12
--
-- >>> pipe [(\x -> x * 4), (\x -> x + x)] 3
-- 24
使用 foldl 解决此问题的最佳方法是什么?谢谢!