This paper explores some ideas concerning the time-analysis of functional programs defined by instantiating typical recursion patterns such as folds, unfolds, and hylomorphisms. The concepts in this paper are illustrated through a rich set of examples in the Haskell programming language. We concentrate on unfolds and folds (also known as anamorphisms and catamorphisms respectively) of recursively defined types, as well as the more general hylomorphism pattern. For the latter, we use as case-studies two famous sorting algorithms, mergesort and quicksort. Even though time analysis is not compositional, we argue that splitting functions to expose the explicit construction of the recursion tree and its later consumption helps with this analysis...
Structured parallelism using nested algorithmic skeletons can greatly ease the task of writing paral...
This thesis is an investigation of graph algorithms in the non-strict purely functional language Has...
Sorting algorithms are one of the key pedagogical foundations of computer science, and their propert...
Although the principles behind generic programming are already well understood, this style of progra...
Loopless algorithms generate successive combinatorial patterns in constant time, producing the first...
AbstractAlthough the principles behind generic programming are already well understood, this style o...
One style of functional programming is based purely on recursive equations. Such equations are easy ...
This paper describes a new technique for identifying potentially parallelisable code structures in f...
In functional programming, fold is a standard operator that encapsulates a simple pattern of recursi...
Okasaki and others have demonstrated how purely functional data structures that are efficient even i...
is applied to the task of evolving general recursive sorting algorithms. We studied the effects of l...
Typically there are significant differences between the initial formulation of an algorithm and its ...
We present an algorithm for unrolling recursion in the Haskell functional language. Adapted from a s...
This work has been partially supported by the EU H2020 grant “RePhrase: Refactoring Parallel Heterog...
No longer the preserve of specialist hardware, parallel devices are now ubiquitous. Pattern-based ...
Structured parallelism using nested algorithmic skeletons can greatly ease the task of writing paral...
This thesis is an investigation of graph algorithms in the non-strict purely functional language Has...
Sorting algorithms are one of the key pedagogical foundations of computer science, and their propert...
Although the principles behind generic programming are already well understood, this style of progra...
Loopless algorithms generate successive combinatorial patterns in constant time, producing the first...
AbstractAlthough the principles behind generic programming are already well understood, this style o...
One style of functional programming is based purely on recursive equations. Such equations are easy ...
This paper describes a new technique for identifying potentially parallelisable code structures in f...
In functional programming, fold is a standard operator that encapsulates a simple pattern of recursi...
Okasaki and others have demonstrated how purely functional data structures that are efficient even i...
is applied to the task of evolving general recursive sorting algorithms. We studied the effects of l...
Typically there are significant differences between the initial formulation of an algorithm and its ...
We present an algorithm for unrolling recursion in the Haskell functional language. Adapted from a s...
This work has been partially supported by the EU H2020 grant “RePhrase: Refactoring Parallel Heterog...
No longer the preserve of specialist hardware, parallel devices are now ubiquitous. Pattern-based ...
Structured parallelism using nested algorithmic skeletons can greatly ease the task of writing paral...
This thesis is an investigation of graph algorithms in the non-strict purely functional language Has...
Sorting algorithms are one of the key pedagogical foundations of computer science, and their propert...