Statically Unrolling Recursion to Improve Opportunities for ParallelismDeshpandeNeil AshishauthorColumbia University. Computer ScienceEdwardsStephen A.authorColumbia University. Computer ScienceColumbia University. Computer ScienceoriginatorcontributortextTechnical reportsNew YorkDepartment of Computer Science, Columbia University2012We present an algorithm for unrolling recursion in the Haskell functional language. Adapted from a similar algorithm proposed by Rugina and Rinard for imperative languages, it essentially inlines a function in itself as many times as requested. This algorithm aims to increase the available parallelism in recursive functions, with an eye toward its eventual application in a Haskell-to-hardware compiler. We first illustrate the technique on a series of examples, then describe the algorithm, and finally show its Haskell source, which operates as a plug-in for the Glasgow Haskell Compiler.Computer scienceColumbia University Computer Science Technical ReportsCUCS-011-12http://hdl.handle.net/10022/AC:P:14249EnglishNNCNNC2012-07-26 12:28:17 -04002012-07-30 09:49:11 -04008258eng