Załóżmy, że mam dwie funkcje: f :: [a] -> b
i g :: [a] -> c
. Mam następujące dwa pytania:Czy możliwe jest zoptymalizowanie prezentowanej obudowy w jedną pętlę?
Gdybym wykonać
(f &&& g) xs
gdziexs :: [a]
, a jeśli zarównof
ig
obejmować pętle, czy to możliwe, że kompilator zoptymalizować te dwie pętle do jednego? (Należy pamiętać, że ja nie pytam czy jakiś specyficzny kompilator Haskell realizuje to. Chcę wiedzieć, czy coś takiego jest możliwe.)Czy funkcja
traverse
zTraverse
typu klasy pomoc mi mieć taką optymalizację z coś wzdłuż następujących linii:traverse (someCombinator f g) xs
Myślę, że optymalizacje jak w 1. mogą być wykonywane przez superkompilatory. – Landei