Да, если в списке гарантированно указан элемент first , мы можем использовать foldl1 :: (a -> a -> a) -> [a] -> a
, который использует first элемент списка в качестве начального аккумулятора.Поэтому мы можем использовать:
<b>foldl1</b> (^) [2, 3, 4]
Это, конечно, дает тот же результат:
Prelude> foldl1 (^) [2,3,4]
4096
Обратите внимание, что в случае использования пустого списка вышеупомянутая функция будетошибка.Поэтому вам нужно будет обработать этот случай - если это возможно - с помощью некоторой дополнительной логики.