Effect systems refine types with information about the behaviour of programs. They have been used for many purposes, such as optimizing programs, determining resource usage, and finding bugs. So far, however, work on effect systems has largely concentrated on call-by-value languages. We consider the problem of designing an effect system for a lazy language. This is more challenging because it depends on the ability to locate the first use of each variable. Coeffect systems, which track contextual requirements of programs, provide a method of doing this. We describe how to track variable usage in a coeffect system that can be instantiated for different reduction strategies, including call-by-need. We then add effects to the result, allowing ...
A number of useful optimisations are enabled if we can determine when a value is accessed at most on...
There has been significant interest in recent months in finding new ways to implement composable and...
In Part I [5], we proposed an approach to formally describe and compare functional languages impleme...
Effect systems refine types with information about the behaviour of programs. They have been used fo...
Traditionally, reasoning about programs under varying evaluation regimes (call-by-value, call-by-nam...
Monadic effect systems provide a unified way of tracking effects of computations, but there is no un...
AbstractIn this paper we present a new programming technique for lazy functional programming languag...
In this paper we present a new programming technique for lazy functional programming languages. The ...
Effect handlers have recently gained popularity amongst programming language researchers. Existing t...
A number of useful optimisations are enabled if we can determine when a value is accessed at most on...
We present the first operational account of call by need that con-nects syntactic theory and impleme...
It is well known that adding side effects to functional languages changes the operational equivalenc...
We introduce a precise interprocedural effect analysis for programs with mutable state, dynamic obje...
This is the author accepted manuscript. It is currently under an indefinite embargo pending publicat...
Abstract. In game semantics and related approaches to programming language semantics, programs are m...
A number of useful optimisations are enabled if we can determine when a value is accessed at most on...
There has been significant interest in recent months in finding new ways to implement composable and...
In Part I [5], we proposed an approach to formally describe and compare functional languages impleme...
Effect systems refine types with information about the behaviour of programs. They have been used fo...
Traditionally, reasoning about programs under varying evaluation regimes (call-by-value, call-by-nam...
Monadic effect systems provide a unified way of tracking effects of computations, but there is no un...
AbstractIn this paper we present a new programming technique for lazy functional programming languag...
In this paper we present a new programming technique for lazy functional programming languages. The ...
Effect handlers have recently gained popularity amongst programming language researchers. Existing t...
A number of useful optimisations are enabled if we can determine when a value is accessed at most on...
We present the first operational account of call by need that con-nects syntactic theory and impleme...
It is well known that adding side effects to functional languages changes the operational equivalenc...
We introduce a precise interprocedural effect analysis for programs with mutable state, dynamic obje...
This is the author accepted manuscript. It is currently under an indefinite embargo pending publicat...
Abstract. In game semantics and related approaches to programming language semantics, programs are m...
A number of useful optimisations are enabled if we can determine when a value is accessed at most on...
There has been significant interest in recent months in finding new ways to implement composable and...
In Part I [5], we proposed an approach to formally describe and compare functional languages impleme...