Conference
Glasgow Workshop on Functional Programming
About: Glasgow Workshop on Functional Programming is an academic conference. The conference publishes majorly in the area(s): Functional programming & Compiler. Over the lifetime, 83 publications have been published by the conference receiving 1046 citations.
Papers
Proceedings Article•
[...]
6 Jul 1992
TL;DR: This work describes how some monads may be combined with others to yield a combined monad, a way of structuring functional programs.
91 citations
1 Jan 1995
TL;DR: It is shown how to prove properties of lazy streams by co-induction and derive Bird and Wadler’s Take Lemma, a well-known proof technique for lazy streams.
Abstract: Co-induction is an important tool for reasoning about unbounded structures. This tutorial explains the foundations of co-induction, and shows how it justifies intuitive arguments about lazy streams, of central importance to lazy functional programmers. We explain from first principles a theory based on a new formulation of bisimilarity for functional programs, which coincides exactly with Morris-style contextual equivalence. We show how to prove properties of lazy streams by co-induction and derive Bird and Wadler’s Take Lemma, a well-known proof technique for lazy streams.
84 citations
Proceedings Article•
21 Aug 1989TL;DR: Two types of time-equation are introduced: suucient-time equations and necessary- time equations, which together provide bounds on the exact time-complexity of expressions in a lazy higher-order language.
Abstract: This paper is concerned with the time-analysis of functional programs. Techniques which enable us to reason formally about a program’s execution costs have had relatively little attention in the study of functional programming. We concentrate here on the construction of equations which compute the time-complexity of expressions in a lazy higher-order language.
69 citations
6 Jul 1992
TL;DR: A new solution for the I/O problem which is incorporated in the language Concurrent Clean and can in principle be applied for any other functional language as well provided that it actually uses graph rewriting semantics in the implementation.
Abstract: The interface with the outside world has always been one of the weakest points of functional languages. It is not easy to incorporate I/O without being allowed to do side-effects. Furthermore, functional languages allow redexes to be evaluated in any order while I/O generally has to be performed in a very specific order. In this paper we present a new solution for the I/O problem which we have incorporated in the language Concurrent Clean. Concurrent Clean offers a linear type system called Unique Types. It makes it possible to define functions with side-effects without violating the functional semantics. Now it is possible to change any object in the world in the way we wanted: e.g. arrays can be updated in-situ, arbitrary file manipulation is possible. We have used this powerful tool among others to create a library for window based I/O. Using an explicit environment passing scheme provides a high-level and elegant functional specification method for I/O, called Event I/O. Now the specification of I/O has become one of the strengths of functional languages: interactive programs written in Concurrent Clean are concise, easy to write and comprehend as well as efficient. The presented solution can in principle be applied for any other functional language as well provided that it actually uses graph rewriting semantics in the implementation.
50 citations
12 Aug 1991
TL;DR: In this paper, the authors define a family of improvement preorderings which express, in a variety of ways, when one expression is more efficient than another, and establish conditions on the operators of the language which guarantee that an improvement relation is a precongruence.
Abstract: In this paper we address the technical foundations essential to the aim of providing a semantic basis for the formal treatment of relative efficiency in functional languages. For a general class of “functional” computation systems, we define a family of improvement preorderings which express, in a variety of ways, when one expression is more efficient than another. The main results of this paper build on Howe’s study of equality in lazy computation systems, and are concerned with the question of when a given improvement relation is subject to the usual forms of (in)equational reasoning (so that, for example, we can improve an expression by improving any sub-expression). For a general class of computation systems we establish conditions on the operators of the language which guarantee that an improvement relation is a precongruence. In addition, for a particular higher-order nonstrict functional language, we show that any improvement relation which satisfies a simple monotonicity condition with respect to the rules of the operational semantics has the desired congruence property.
49 citations
Performance Metrics
| Year | Papers |
|---|---|
| 1997 | 1 |
| 1996 | 1 |
| 1995 | 1 |
| 1994 | 1 |
| 1992 | 23 |
| 1991 | 30 |