Lennart Augustsson

Learn More
Cayenne is a Haskell-like language. The main difference between Haskell and Cayenne is that Cayenne has dependent types, i.e., the <i>result type</i> of a function may depend on the <i>argument value</i>, and types of record components (which can be types or values) may depend on other components. Cayenne also combines the syntactic categories for value(More)
Haskell overloading poses new challenges for compiler writers. Until recently there have been no implementations of it which have had acceptable performance; users have been adviced to avoid it by using explicit type signatures. This is unfortunate since it does not promote the reusability of software components that overloading reaJly offers. In this paper(More)
References 141 Index 143 iv CONTENTS PREFACE v Preface " Some half dozen persons have written technically on combinatory logic, and most of these, including ourselves, have published something erroneous. Since some of our fellow sinners are among the most careful and competent logicians on the contemporary scene, we regard this as evidence that the subject(More)
We have implemented a two-stage language, Paradise, for building reusable components which are used to price financial products. Paradise is embedded in Haskell and makes heavy use of type-class based overloading, allowing the second stage to be compiled into a variety of backend platforms. Paradise has enabled us to begin moving away from implementation(More)
This paper presents an extension to standard Hindley-Milner type checking that allows constructors in data types to have non-uniform result types. We use Haskell as the sample language, [Hud92], but it should work for any language using H-M. It starts with some motivating examples and then shows the type rules for a simple language. Finally, it contains a(More)