Desforestació en informàtica, anomenada també fusió de bucles, és una transformació de programes per eliminar estructures intermèdies temporals. S'aplica en el context d'una composició de funcions sobre estructures, obtenint la fusió dels bucles que les recorren. El terme “desforestació” va ésser emprat per primera vegada per Philip Wadler en el seu estudi "Deforestation: transforming programs to eliminate trees".
La desforestació té aplicació en llenguatges de programació funcional, en especial els llenguatges estrictes com ara el OCaml i Scala.
En els llenguatges d'avaluació tardana com ara Haskell en una composició els elements es forneixen sota comanda d'un en un (crida per necessitat), evitant la generació completa d'estructures intermèdies dels llenguatges estrictes. Queda llavors l'optimització possible de fusió dels bucles.
Tipus Fusió de bucles en curt-circuit (ang Shortcut fusion) implementat en el compilador GHC (Glasgow Haskell Compiler).
Transformació en corrents de dades (ang Stream-fusion): El corrent incorpora la possibilitat de tenir elements sense dades, com a conseqüència d'operacions de filtratge.From lists to streams to nothing at all (presentació) Document
Implementat inicialment al compilador MLton de llenguatge ML Estàndard.Stream fusion a MLtonStream-fusion
Implementat al compilador GHC (Glasgow Haskell Compiler) gràcies a la pragma RULES. Vegeu biblioteca Stream-fusion al HackageBiblioteca Stream-fusion al Hackage
Les funcions com ara els filtres d'aquesta biblio. s'implementen en Haskell com una composició, començant per l'operació de conversió stream sobre l'estructura i acabant per la inversa unstream. En la composició de funcions, l'aparició juxtaposada de les conversions unstream al final d'una funció amb la inversa stream de l'inici de la següent és eliminada pel compilador.Loop fusion Stream fusion for Haskell Arrays
Referències
Categoria:Terminologia informàtica