A number of useful optimisations are enabled if we can determine when a value is accessed at most once. We extend the Hindley-Milner type system with uses, yielding a type-inference based program analysis which determines when values are accessed at most once. Our analysis can handle higher-order functions and data structures, and admits principal types for terms. Unlike previous analyses, we prove our analysis sound with respect to call-by-need reduction. Call-by-name reduction does not provide an accurate model of how often a value is used during lazy evaluation, since it duplicates work which would actually be shared in a real implementation. Our type system can easily be modified to analyse usage in a call-by-value language. 1 Introduct...
Effect systems refine types with information about the behaviour of programs. They have been used fo...
AbstractThe Hindley/Milner discipline for polymorphic type inference in functional programming langu...
Powerful concurrency primitives in recent concurrent languages and thread libraries provide the grea...
A number of useful optimisations are enabled if we can determine when a value is accessed at most on...
A number of useful optimisations are enabled if we can determine when a value is accessed at most on...
. This paper will present an analysis for detecting single uses of values in functional programs du...
AbstractApproaches to static analysis based on nonstandard type systems have received considerable i...
. In this paper we present a general framework for type-based analyses of functional programs. Our f...
Usage analysis aims to predict the number of times a heap allocated closure is used. Previously prop...
Binding-time analysis is important in partial evaluators. Its task is to determine which parts of a ...
Binding time analysis is important in partial evaluators. Its task is to determine which parts of a...
Dynamically typed languages lack information about the types of variables in the source code. Develo...
Dynamically typed languages allow developers to write more expressive source code, but their lack of...
Highly dynamic languages like Smalltalk do not have much static type information immediately availab...
. Binding-time analysis is a crucial part of offline partial evaluation. It is often specified as a ...
Effect systems refine types with information about the behaviour of programs. They have been used fo...
AbstractThe Hindley/Milner discipline for polymorphic type inference in functional programming langu...
Powerful concurrency primitives in recent concurrent languages and thread libraries provide the grea...
A number of useful optimisations are enabled if we can determine when a value is accessed at most on...
A number of useful optimisations are enabled if we can determine when a value is accessed at most on...
. This paper will present an analysis for detecting single uses of values in functional programs du...
AbstractApproaches to static analysis based on nonstandard type systems have received considerable i...
. In this paper we present a general framework for type-based analyses of functional programs. Our f...
Usage analysis aims to predict the number of times a heap allocated closure is used. Previously prop...
Binding-time analysis is important in partial evaluators. Its task is to determine which parts of a ...
Binding time analysis is important in partial evaluators. Its task is to determine which parts of a...
Dynamically typed languages lack information about the types of variables in the source code. Develo...
Dynamically typed languages allow developers to write more expressive source code, but their lack of...
Highly dynamic languages like Smalltalk do not have much static type information immediately availab...
. Binding-time analysis is a crucial part of offline partial evaluation. It is often specified as a ...
Effect systems refine types with information about the behaviour of programs. They have been used fo...
AbstractThe Hindley/Milner discipline for polymorphic type inference in functional programming langu...
Powerful concurrency primitives in recent concurrent languages and thread libraries provide the grea...