Common subexpression elimination is a well-known compiler optimisation that saves time by avoiding the repetition of the same computation. In lazy functional languages, referential transparency renders the identification of common subexpressions very simple. More common subexpressions can be recognised because they can be of arbitrary type whereas standard common subexpression elimination only shares primitive values. However, because lazy functional languages decouple program structure from data space allocation and control flow, analysing its effects and deciding under which conditions the elimination of a common subexpression is beneficial proves to be quite difficult. We developed and implemented the transformation for the language Hask...
The evaluation strategies of programming languages can be broadly categorised as strict or lazy. A c...
LOLITA is a large scale natural processing system written in the functional language Haskell. It con...
A computation tree of a program execution describes computations of functions and their dependencies...
Common subexpression elimination is a well-known compiler optimisation that saves time by avoiding t...
Abstract. Common subexpression elimination is a well-known compiler optimisation that saves time by ...
Six implementations of different lazy functional languages are compared using a common benchmark of ...
This thesis describes a complete compiler back-end for lazy functional languages, which uses various...
In this thesis we present and analyse a set of automatic source-to-source program transformations th...
Lazy functional languages such as LML [4], Haskell [21], and Concurrent Clean [35] typically feature...
Functional programming languages such as Haskell are fundamentally different from imperative languag...
Some modern superscalar microprocessors provide only imprecise exceptions. That is, they do not guar...
Functional programming languages such as Haskell are fundamentally different from imperative languag...
Automatic memory management is an important concept in many high order languages. It improves produc...
International audienceIn a previous paper, Benaissa, Lescanne, and Rose, have extended the weak lamb...
AbstractLaziness restricts the exploitation of parallelism because expressions are evaluated only on...
The evaluation strategies of programming languages can be broadly categorised as strict or lazy. A c...
LOLITA is a large scale natural processing system written in the functional language Haskell. It con...
A computation tree of a program execution describes computations of functions and their dependencies...
Common subexpression elimination is a well-known compiler optimisation that saves time by avoiding t...
Abstract. Common subexpression elimination is a well-known compiler optimisation that saves time by ...
Six implementations of different lazy functional languages are compared using a common benchmark of ...
This thesis describes a complete compiler back-end for lazy functional languages, which uses various...
In this thesis we present and analyse a set of automatic source-to-source program transformations th...
Lazy functional languages such as LML [4], Haskell [21], and Concurrent Clean [35] typically feature...
Functional programming languages such as Haskell are fundamentally different from imperative languag...
Some modern superscalar microprocessors provide only imprecise exceptions. That is, they do not guar...
Functional programming languages such as Haskell are fundamentally different from imperative languag...
Automatic memory management is an important concept in many high order languages. It improves produc...
International audienceIn a previous paper, Benaissa, Lescanne, and Rose, have extended the weak lamb...
AbstractLaziness restricts the exploitation of parallelism because expressions are evaluated only on...
The evaluation strategies of programming languages can be broadly categorised as strict or lazy. A c...
LOLITA is a large scale natural processing system written in the functional language Haskell. It con...
A computation tree of a program execution describes computations of functions and their dependencies...