Я пытаюсь написать функцию, 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? Спасибо!