A tutorial on the universality and expressiveness of fold
G Hutton - Journal of Functional Programming, 1999 - cambridge.org
In functional programming, fold is a standard operator that encapsulates a simple pattern of
recursion for processing lists. This article is a tutorial on two key aspects of the fold operator …
recursion for processing lists. This article is a tutorial on two key aspects of the fold operator …
The algebra of programming
R Bird, O De Moor - NATO ASI DPD, 1996 - books.google.com
In these lecture notes we describe an algebraic approach to programming, suitable both for
the derivation of individual programs and for the study of programming techniques in …
the derivation of individual programs and for the study of programming techniques in …
Stream fusion: From lists to streams to nothing at all
D Coutts, R Leshchinskiy, D Stewart - ACM SIGPLAN Notices, 2007 - dl.acm.org
This paper presents an automatic deforestation system, stream fusion, based on equational
transformations, that fuses a wider range of functions than existing short-cut fusion systems …
transformations, that fuses a wider range of functions than existing short-cut fusion systems …
Optimising purely functional GPU programs
Purely functional, embedded array programs are a good match for SIMD hardware, such as
GPUs. However, the naive compilation of such programs quickly leads to both code …
GPUs. However, the naive compilation of such programs quickly leads to both code …
Functional collection programming with semi-ring dictionaries
This paper introduces semi-ring dictionaries, a powerful class of compositional and purely
functional collections that subsume other collection types such as sets, multisets, arrays …
functional collections that subsume other collection types such as sets, multisets, arrays …
Shortcut fusion for accumulating parameters & zip-like functions
J Svenningsson - ACM SIGPLAN Notices, 2002 - dl.acm.org
We present an alternative approach to shortcut fusion based on the function unfoldr,.
Despite its simplicity the technique can remove intermediate lists in examples which are …
Despite its simplicity the technique can remove intermediate lists in examples which are …
Compositional explanation of types and algorithmic debugging of type errors
O Chitil - Proceedings of the sixth ACM SIGPLAN international …, 2001 - dl.acm.org
The type systems of most typed functional programming languages are based on the
Hindley-Milner type system. A practical problem with these type systems is that it is often …
Hindley-Milner type system. A practical problem with these type systems is that it is often …
LoPC: modeling contention in parallel algorithms
Parallel algorithm designers need computational models that take first order system costs
into account, but are also simple enough to use in practice. This paper introduces the LoPC …
into account, but are also simple enough to use in practice. This paper introduces the LoPC …
[PDF][PDF] Structured handling of scoped effects
Algebraic effects offer a versatile framework that covers a wide variety of effects. However,
the family of operations that delimit scopes are not algebraic and are usually modelled as …
the family of operations that delimit scopes are not algebraic and are usually modelled as …
Fusion for free: Efficient algebraic effect handlers
Algebraic effect handlers are a recently popular approach for modelling side-effects that
separates the syntax and semantics of effectful operations. The shape of syntax is captured …
separates the syntax and semantics of effectful operations. The shape of syntax is captured …