Many program optimisations involve transforming a program in direct style to an equivalent program in continuation-passing style. This paper investigates the theoretical underpinnings of this transformation in the categorical setting of monads. We argue that so-called absolute Kan Extensions underlie this program optimisation. It is known that every Kan extension gives rise to a monad, the codensity monad, and furthermore that every monad is isomorphic to a codensity monad. The end formula for Kan extensions then induces an implementation of the monad, which can be seen as the categorical counterpart of continuation-passing style. We show that several optimisations are instances of this scheme: Church representations and implementation of b...
This paper proposes that the meanings of some natural language expressions should be thought of as f...
Some programs are not merely sets of batch instructions performed in isolation. They interact, eithe...
Monads are becoming an increasingly important tool for structural functional programming, because th...
Abstract. Many program optimisations involve transforming a pro-gram in direct style to an equivalen...
The monads used to model effectful computations traditionally concentrate on the 'destinati...
One way of interpreting a left Kan extension is as taking a kind of “partial colimit”, whereby one r...
We show that any monad whose unit and extension operations are expressible as purely functional term...
In this paper, we will discuss three semantically distinct scope assignment strategies: traditional ...
Delimited continuations are more expressive than traditional abortive continuations and they apparen...
AbstractThe aim is to apply string-rewriting methods to compute left Kan extensions, or, equivalentl...
Plotkin's -value calculus is sound but incomplete for reasoning about -transfor-mations on prog...
Higher-order program transformations raise new challenges for proving properties of their output, si...
In a paper about pretty printing J. Hughes introduced two fundamental techniques for deriving progra...
Monads have become a powerful tool for structuring effectful computations in functional program-ming...
Context: Reynolds showed us how to use continuation-passing style and defunctionalization to transfo...
This paper proposes that the meanings of some natural language expressions should be thought of as f...
Some programs are not merely sets of batch instructions performed in isolation. They interact, eithe...
Monads are becoming an increasingly important tool for structural functional programming, because th...
Abstract. Many program optimisations involve transforming a pro-gram in direct style to an equivalen...
The monads used to model effectful computations traditionally concentrate on the 'destinati...
One way of interpreting a left Kan extension is as taking a kind of “partial colimit”, whereby one r...
We show that any monad whose unit and extension operations are expressible as purely functional term...
In this paper, we will discuss three semantically distinct scope assignment strategies: traditional ...
Delimited continuations are more expressive than traditional abortive continuations and they apparen...
AbstractThe aim is to apply string-rewriting methods to compute left Kan extensions, or, equivalentl...
Plotkin's -value calculus is sound but incomplete for reasoning about -transfor-mations on prog...
Higher-order program transformations raise new challenges for proving properties of their output, si...
In a paper about pretty printing J. Hughes introduced two fundamental techniques for deriving progra...
Monads have become a powerful tool for structuring effectful computations in functional program-ming...
Context: Reynolds showed us how to use continuation-passing style and defunctionalization to transfo...
This paper proposes that the meanings of some natural language expressions should be thought of as f...
Some programs are not merely sets of batch instructions performed in isolation. They interact, eithe...
Monads are becoming an increasingly important tool for structural functional programming, because th...