[I2 logo] [RWTH logo] MOVES: Software Modeling and Verification
(Informatik 2)
Computer Science / RWTH / I2 / Research / AG / FP

Functional Programming




Compiler Optimisation

Since functional programming languages are based on mathematical concepts, they are amenable to formal analysis and manipulation. Especially pure functional languages, i.e. those without side effects, do not have a fixed execution model. Hence the efficiency of program execution can be considerably improved by program transformations or modifications of the execution model using information gained by static analysis of programs.

Our current main focus is on automatic transformations for optimising programs, especially with respect to time consumption. The goal is to build a large system for optimising functional programs, which consists of a variable number of arbitrarily combineable transformation modules. This system shall itself be implemented in a functional programming language.

In order to avoid building a completely new system from scratch we decided to base our work on the Glasgow Haskell Compiler. This compiler is heavily based on the ``compilation by transformation'' paradigm and it has furthermore been designed with the goal that other people can modify and extend it - especially with new optimising transformations. Since the development of the Glasgow Haskell Compiler is a long-term project undertaken by a team, the compiler is also quite well documented. Finally, it is a widely-used compiler for a standard language. Hence we can easily test our transformations with real-world programs and the transformations may even eventually become part of the Glasgow Haskell compiler and thus find their way from theory into practical use.

We study as-yet unimplemented program transformations described in the literature, discuss their implementation and the design of the whole system, and messure the effect of transformations and the interplay of several transformations.

A center of interest is the analysis of existing deforestation algorithms and development of improved new ones.

Glasgow Haskell Compiler

The Glasgow Haskell Compiler is used for many projects here, also in the Modelling Concurrent Systems group. Hence we provide binary packages for ghc and related tools.

Language Design

Modern functional languages like Standard ML, Miranda, or Haskell feature function definition by pattern matching, higher-order functions, algebraic types, and a strong polymorphic type system. Languages with non-strict semantics like Miranda or Haskell offer even more forms of abstraction. Extending some of these features is another of our goals.

See the context patterns home page.

Other FP-Software

Promoting Functional Programming

As convinced functional programmers, we naturally use functional languages ourselves (i.e. Haskell) and teaching functional programming is part of our work.

Working Group: Implementation of Functional Languages

In this group researchers and students come together about every two weeks to discuss the subjects mentioned above. It serves especially as a meeting point for students interested in writing their Master thesis (Diplomarbeit) in this area. Some topics for future Master Theses.

Present Results

Links to Functional Programming

More local information on some subjects: Starting with functional programming: There already exist several large collections of links to functional programming. Hence there is no point in us trying to make a new one. So here are links to collections of links to functional programming:


Relevant Conferences and Workshops

Some Functional Programming Research Groups

Valid HTML 4.01 Strict! Valid CSS!