Content deleted Content added
→Optimizations: «+" xs"» forgot the list the map would be operating on |
→Optimizations: «+"<ref>[http://www.randomhacks.net/articles/2007/02/10/map-fusion-and-haskell-performance 'Map fusion: Making Haskell 225% faster'</ref>"» yay, a reference |
||
Line 16:
==Optimizations==
The mathematical basis of maps allow for a number of [[optimization]]s. If one has <code>map f . map g</code> ('.' is function application; <code>map f (map g xs)</code> is equivalent) then it is the same as the simpler <code>map (f . g) xs</code>; this particular simplification and optimization is a "map fusion"<ref>[http://www.randomhacks.net/articles/2007/02/10/map-fusion-and-haskell-performance "Map fusion: Making Haskell 225% faster"</ref>. Map functions can and often are defined in terms of a [[Fold (higher-order function)|fold]] such as <code>foldr</code>, which means one can do a "map-fold fusion": <code>f z . map g</code> is equivalent to <code>foldr (f . g) z</code>.
==Haskell's Functor class==
|