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
Binding time analysis is important in partial evaluators. Its task is to determine which parts of a...
Dynamically typed languages allow developers to write more expressive source code, but their lack of...
Abstract. We present a procedure to infer a typing for an arbitrary -term M in an intersection-type ...
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...
Highly dynamic languages like Smalltalk do not have much static type information immediately availab...
Usage analysis aims to predict the number of times a heap allocated closure is used. Previously prop...
AbstractThe Hindley/Milner discipline for polymorphic type inference in functional programming langu...
We consider the problems of first-order unification and type inference from a general perspective on...
Abstract. Dependent types are useful for statically checking detailed specifications of programs and...
Binding-time analysis is important in partial evaluators. Its task is to determine which parts of a ...
Effect systems refine types with information about the behaviour of programs. They have been used fo...
Dynamically typed languages lack information about the types of variables in the source code. Develo...
Binding time analysis is important in partial evaluators. Its task is to determine which parts of a...
Dynamically typed languages allow developers to write more expressive source code, but their lack of...
Abstract. We present a procedure to infer a typing for an arbitrary -term M in an intersection-type ...
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...
Highly dynamic languages like Smalltalk do not have much static type information immediately availab...
Usage analysis aims to predict the number of times a heap allocated closure is used. Previously prop...
AbstractThe Hindley/Milner discipline for polymorphic type inference in functional programming langu...
We consider the problems of first-order unification and type inference from a general perspective on...
Abstract. Dependent types are useful for statically checking detailed specifications of programs and...
Binding-time analysis is important in partial evaluators. Its task is to determine which parts of a ...
Effect systems refine types with information about the behaviour of programs. They have been used fo...
Dynamically typed languages lack information about the types of variables in the source code. Develo...
Binding time analysis is important in partial evaluators. Its task is to determine which parts of a...
Dynamically typed languages allow developers to write more expressive source code, but their lack of...
Abstract. We present a procedure to infer a typing for an arbitrary -term M in an intersection-type ...