Matches in SemOpenAlex for { <https://semopenalex.org/work/W1569267605> ?p ?o ?g. }
- W1569267605 abstract "In lazy functional programming modularity is often achieved by using intermediate data structures to combine separate parts of a program. Each intermediate data structure is produced by one part and consumed by another one. Deforestation optimises a functional program by transformation into a program which does not produce such intermediate data structures. In this thesis we present a new method for deforestation, which combines a known method,short cut deforestation, with a new analysis that is based on type inference. Short cut deforestation eliminates an intermediate list by a single, local transformation. In return, short cut deforestation expects both producer and consumer of the intermediate list in a certain form. Whereas the required form of the consumer is generally considered desirable in a well-structured program anyway, the required form of the producer is only a crutch to enable deforestation. Hence only the list-producing functions of the standard libraries were defined in the desired form and short cut deforestation has been confined to compositions of these functions. Here, we present an algorithm which transforms an arbitrary producer into the required form. Starting from the observation that short cut deforestation is based on a parametricity theorem of the second-order typed lambda-calculus, we show how the construction of the required form can be reduced to a type inference problem. Typability for the second-order typed lambda-calculus is undecidable, but we only need to solve a partial type inference problem. For this problem we develop an algorithm based on the well-known Hindley-Milner type inference algorithm. The transformation of a producer often requires inlining of some function definitions. Type inference even indicates which function definitions need to be inlined. However, only limited inlining across module boundaries is practically feasible. Therefore, we extend the previously developed algorithm to split a function definition into a worker definition and a wrapper definition. We only need to inline the small wrapper definition, which transfers all information required for deforestation. The flexibility of type inference allows us to remove intermediate lists which original short cut deforestation cannot remove, even with hand-crafted producers. In contrast to most previous work on deforestation, we give a detailed proof of completeness and semantic correctness of our transformation." @default.
- W1569267605 created "2016-06-24" @default.
- W1569267605 creator A5018345365 @default.
- W1569267605 date "2000-10-01" @default.
- W1569267605 modified "2023-09-26" @default.
- W1569267605 title "Type-Inference Based Deforestation of Functional Programs" @default.
- W1569267605 cites W102024464 @default.
- W1569267605 cites W113285063 @default.
- W1569267605 cites W1480753098 @default.
- W1569267605 cites W1491178396 @default.
- W1569267605 cites W1492124994 @default.
- W1569267605 cites W1507693023 @default.
- W1569267605 cites W1509144055 @default.
- W1569267605 cites W1524744826 @default.
- W1569267605 cites W1527876555 @default.
- W1569267605 cites W1533251067 @default.
- W1569267605 cites W1537537016 @default.
- W1569267605 cites W1542297244 @default.
- W1569267605 cites W1543641760 @default.
- W1569267605 cites W1546727036 @default.
- W1569267605 cites W1549406551 @default.
- W1569267605 cites W1560599447 @default.
- W1569267605 cites W1565899642 @default.
- W1569267605 cites W1571388507 @default.
- W1569267605 cites W1595372275 @default.
- W1569267605 cites W1597497095 @default.
- W1569267605 cites W1608714802 @default.
- W1569267605 cites W1634581701 @default.
- W1569267605 cites W172004165 @default.
- W1569267605 cites W1765915613 @default.
- W1569267605 cites W1881030539 @default.
- W1569267605 cites W1939773358 @default.
- W1569267605 cites W1963587568 @default.
- W1569267605 cites W1964952791 @default.
- W1569267605 cites W1966981171 @default.
- W1569267605 cites W1979299346 @default.
- W1569267605 cites W1986749897 @default.
- W1569267605 cites W1987720044 @default.
- W1569267605 cites W1988932014 @default.
- W1569267605 cites W1991685539 @default.
- W1569267605 cites W199231109 @default.
- W1569267605 cites W1997671764 @default.
- W1569267605 cites W2004843654 @default.
- W1569267605 cites W2009332552 @default.
- W1569267605 cites W2011648260 @default.
- W1569267605 cites W2018652291 @default.
- W1569267605 cites W2019376542 @default.
- W1569267605 cites W2019469504 @default.
- W1569267605 cites W2026930779 @default.
- W1569267605 cites W2033185534 @default.
- W1569267605 cites W2044758536 @default.
- W1569267605 cites W2046645050 @default.
- W1569267605 cites W2048706733 @default.
- W1569267605 cites W2050907089 @default.
- W1569267605 cites W2055065270 @default.
- W1569267605 cites W2057292961 @default.
- W1569267605 cites W2060717017 @default.
- W1569267605 cites W2070118331 @default.
- W1569267605 cites W2071457257 @default.
- W1569267605 cites W2074802267 @default.
- W1569267605 cites W2084788336 @default.
- W1569267605 cites W2089241138 @default.
- W1569267605 cites W2089674328 @default.
- W1569267605 cites W2091762291 @default.
- W1569267605 cites W2092408876 @default.
- W1569267605 cites W2095621310 @default.
- W1569267605 cites W2097805327 @default.
- W1569267605 cites W2100738443 @default.
- W1569267605 cites W2103859677 @default.
- W1569267605 cites W2110028921 @default.
- W1569267605 cites W2113722134 @default.
- W1569267605 cites W2116151771 @default.
- W1569267605 cites W2117818027 @default.
- W1569267605 cites W2118730676 @default.
- W1569267605 cites W2118883965 @default.
- W1569267605 cites W2126018011 @default.
- W1569267605 cites W2128517960 @default.
- W1569267605 cites W2130363716 @default.
- W1569267605 cites W2144037748 @default.
- W1569267605 cites W2149412346 @default.
- W1569267605 cites W2150421116 @default.
- W1569267605 cites W2154273644 @default.
- W1569267605 cites W2154632906 @default.
- W1569267605 cites W2163976959 @default.
- W1569267605 cites W2166822586 @default.
- W1569267605 cites W2168280960 @default.
- W1569267605 cites W2208923056 @default.
- W1569267605 cites W2216658776 @default.
- W1569267605 cites W2217064041 @default.
- W1569267605 cites W2294680933 @default.
- W1569267605 cites W2329766482 @default.
- W1569267605 cites W2529265216 @default.
- W1569267605 cites W2912818154 @default.
- W1569267605 cites W2968743833 @default.
- W1569267605 cites W2990518766 @default.
- W1569267605 cites W326743114 @default.
- W1569267605 cites W622285400 @default.
- W1569267605 cites W66278423 @default.
- W1569267605 cites W975212003 @default.
- W1569267605 cites W1492693480 @default.