We 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
Unlike sequential software, concurrent software needs a structuring mechanism capable of specifying ...
Reconfigurable computing is a method of development that provides a developer with the ability to re...
<p>With the emergence of commodity multicore architectures, exploiting tightly-coupled paralle...
This paper describes a new technique for identifying potentially parallelisable code structures in f...
This work has been partially supported by the EU H2020 grant “RePhrase: Refactoring Parallel Heterog...
Funding: EU FP7 grant “Parallel Patterns for Adaptive Heterogeneous Multicore Systems” (ICT-288570),...
Recursive functions and data types pose significant challenges for a Haskell-to-hardware compiler. D...
Recursion schemes, such as the well-known map, can be used as loci of potential parallelism, where s...
It has often been suggested that functional languages provide an excellent basis for programming par...
We propose a refactoring tool for the Haskell programming language, capable of introducing paralleli...
Abstract. Programs in languages such as Haskell are often datatype-centric and make extensive use of...
It has long been known that some of the most common uses of for and while-loops in imperative progra...
Higher-order languages, such as Haskell, encourage the programmer to build abstractions by composing...
If you want to program a parallel computer, a purely functional language like Haskell is a promising...
To provide high performance at practical power levels, tomorrow’s chips will have to consist primari...
Unlike sequential software, concurrent software needs a structuring mechanism capable of specifying ...
Reconfigurable computing is a method of development that provides a developer with the ability to re...
<p>With the emergence of commodity multicore architectures, exploiting tightly-coupled paralle...
This paper describes a new technique for identifying potentially parallelisable code structures in f...
This work has been partially supported by the EU H2020 grant “RePhrase: Refactoring Parallel Heterog...
Funding: EU FP7 grant “Parallel Patterns for Adaptive Heterogeneous Multicore Systems” (ICT-288570),...
Recursive functions and data types pose significant challenges for a Haskell-to-hardware compiler. D...
Recursion schemes, such as the well-known map, can be used as loci of potential parallelism, where s...
It has often been suggested that functional languages provide an excellent basis for programming par...
We propose a refactoring tool for the Haskell programming language, capable of introducing paralleli...
Abstract. Programs in languages such as Haskell are often datatype-centric and make extensive use of...
It has long been known that some of the most common uses of for and while-loops in imperative progra...
Higher-order languages, such as Haskell, encourage the programmer to build abstractions by composing...
If you want to program a parallel computer, a purely functional language like Haskell is a promising...
To provide high performance at practical power levels, tomorrow’s chips will have to consist primari...
Unlike sequential software, concurrent software needs a structuring mechanism capable of specifying ...
Reconfigurable computing is a method of development that provides a developer with the ability to re...
<p>With the emergence of commodity multicore architectures, exploiting tightly-coupled paralle...