Можно ли для представленного случая оптимизировать в один цикл?

Предположим, у меня есть две функции f :: [a] -> b и g :: [a] -> c . У меня есть два следующих вопроса:

  1. Если я выполню (f &&& g) xs , где xs :: [a] , и если оба f и g включают циклы, может ли компилятор оптимизировать эти два цикла в один? (Обратите внимание, что я не спрашиваю, реализует ли это какой-то конкретный компилятор Haskell. Я хочу знать, возможно ли такое .)

  2. Может ли пройти функцию из ] Класс типа Traverse помог мне добиться такой оптимизации с помощью чего-то вроде следующих строк:

     traverse (someCombinator fg) xs
    
6
задан missingfaktor 8 February 2012 в 10:38
поделиться