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)
LML is a strongly typed, statically scoped functional Language with Lazy evaluation. It is compiled trough a number of program transformations which makes the code generation easier. Code is generated in two steps, first code for an abstract graph manipulation machine, the G-machine. From this code machine code is generated. Some benchmark tests are also(More)
Introduction Pattern matching is a very powerful and useful device in programming. In functional languages it emerged in SASL [Turn76] and Hope [BursS0], and has also found its way into SML [Miln84]. The pattern mathing described here is that of LML which is a lazy ([Frie76] and [Henri76]) variant of ML. The pattern matching in LML evolved independently of(More)
Over implementations of di erent functional languages are benchmarked using the same program a oating point intensive application taken from molecular biology The principal aspects studied are compile time and Dept of Computer Systems Univ of Amsterdam Kruislaan SJ Amsterdam The Netherlands e mail pieter fwi uva nl D epart d informatique et r o Univ de(More)
/* Pointer or */ int data:30; /* data */ } uword; } word; /* Word in the heap */ typedef struct { word ptrss4]; /* Four pointers (or whatever) */ } node; 11 Appendix A Instruction encoding The description is given in pseudo-C, where we assume that bit elds are packed in a suitable way. All addresses are assumed to be big word aligned thus having four lsb(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)