• Publications
  • Influence
A natural semantics for lazy evaluation
We define an operational semantics for lazy evaluation which provides an accurate model for sharing. The only computational structure we introduce is a set of bindings which corresponds closely to aExpand
  • 392
  • 57
A short cut to deforestation
Lists are often used as \glue" to connect separate parts of a program together. We propose an automatic technique for improving the e ciency of such programs, by removing many of these intermediateExpand
  • 425
  • 50
Lazy functional state threads
Some algorithms make critical internal use of updatable state, even though their external specification is purely functional. Based on earlier work on monads, we present a way of securelyExpand
  • 237
  • 14
Implicit parameters: dynamic scoping with static types
This paper introduces a language feature, called implicit parameters, that provides dynamically scoped variables within a statically-typed Hindley-Milner framework. Implicit parameters are lexicallyExpand
  • 155
  • 13
State in Haskell
Some algorithms make critical internal use of updatable state, even though their external specification is purely functional. Based on earlier work on monads, we present a way of securelyExpand
  • 183
  • 9
Unboxed Values as First Class Citizens in a Non-Strict Functional Language
The code compiled from a non-strict functional program usually manipulates heap-allocated boxed numbers. Compilers for such languages often go to considerable trouble to optimise operations on boxedExpand
  • 180
  • 8
Recursive monadic bindings
Monads have become a popular tool for dealing with computational effects in Haskell for two significant reasons: equational reasoning is retained even in the presence of effects; and programExpand
  • 56
  • 8
Microprocessor specification in Hawk
Modern microprocessors require an immense investment of time and effort to create and verify, from the high level architectural design downwards. We are exploring ways to increase the productivity ofExpand
  • 94
  • 7
Specifying superscalar microprocessors in Hawk
Hawk is a language for the speci cation of microprocessors at the microarchitectural level. In this paper we use Hawk to specify a modern microarchitecture based on the Intel P6 with features such asExpand
  • 32
  • 6
Projection factorisations in partial evaluation
Abstract Preface 1. Partial evaluation in principle 2. Partial evaluation in practice 3. Static projections 4. Binding-time analysis 5. Run time arguments 6. Implementation 7. Polymorphism 8.Expand
  • 75
  • 5