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)
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 25 implementations of diierent 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 execution time for the various implementations that were benchmarked. An important consideration is how the program can be modiied and tuned to(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)
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)
In this paper we investigate how partial evaluation and program transformations can be used on a real problem, namely that of speeding up airline crew scheduling.Scheduling of crews is subject to many rules and restrictions. These restrictions are expressed in a rule language. However, in a given planning situation much is known to be fixed, so the rule set(More)