Предположим, у меня есть две функции f :: [a] -> b
и g :: [a] -> c
. У меня есть два следующих вопроса:
Если я выполню (f &&& g) xs
, где xs :: [a]
, и если оба f
и g
включают циклы, может ли компилятор оптимизировать эти два цикла в один? (Обратите внимание, что я не спрашиваю, реализует ли это какой-то конкретный компилятор Haskell. Я хочу знать, возможно ли такое .)
Может ли пройти функцию
из ] Класс типа Traverse
помог мне добиться такой оптимизации с помощью чего-то вроде следующих строк:
traverse (someCombinator fg) xs