Yes, such optimizations have been reviewed many times.
"fusion" ( map fusion), map f . map g = map (f . g). , "" ( ).
, , , ( , , , Haskell, ). Scala Stream s, Clojure transducers ( ). , , , ( ).
Python ( # IEnumerable/LINQ Java new Stream s) , , ( ). xs = map(print, range(10)) - ; , . (, , , .)