Graham Hutton

Publication List Details

Period

1962 - 2009

Number

125

Co-Authors

Reasoning About Effects: Seeing the Wood Through the Trees (2009)

Graham Hutton, Diana Fulger

Pure functional languages such as Haskell support programming with impure effects by exploiting mathematical notions such as monads, applicative functors, and arrows. However, in contrast to the...

Details Title Programming in Haskell (2009)

Haskell Graham Hutton, Graham Hutton

where he taught the first year functional programming course for several years. He has an impressive publishing record going back to 1990. Scope The book covers the Haskell language, programming...

Implementing Software Transactional Memory, Correctly (2008)

Liyang Hu, Graham Hutton

In recent years there has been much interest in the idea of concurrent programming using transactional memory, for example as provided in STM Haskell. While programmers are provided with a simple...

Reasoning About Effects: Seeing the Wood Through the Trees (Extended Version) (2008)

Graham Hutton, Diana Fulger

Pure functional languages such as Haskell support programming with impure effects by exploiting mathematical notions such as monads, applicative functors, and arrows. However, in contrast to the...

Reference The following presentation is based on... (2008)

Graham Hutton, Erik Meijer, Monadic Parser Combinators

•...in the following summarized as parsing...an application of functional programming typically used to demonstrate its power and elegance. Enjoys a long history. An early work for example is...

Compact Fusion (2008)

Catherine Hope, Graham Hutton

There are many advantages to writing functional programs in a compositional style, such as clarity and modularity. However, the intermediate data structures produced may mean that the resulting...

Under consideration for the Journal of Functional Programming 1 What is the Meaning of These Constant Interruptions? (2008)

Graham Hutton, Joel Wright

Interrupts are important for writing robust, modular programs, but are traditionally viewed as being difficult from a semantic perspective. In this article we present a simple, formally justified,...

Compact Fusion (2008)

Catherine Hope, Graham Hutton

There are many advantages to writing functional programs in a compositional style, such as clarity and modularity. However, the intermediate data structures produced may mean that the resulting...

Chapter 1 Calculating an Exceptional Machine (2008)

Graham Hutton, Joel Wright

Abstract: In previous work we showed how to verify a compiler for a small language with exceptions. In this article we show how to calculate, as opposed to verify, an abstract machine for this...

Under consideration for the Journal of Functional Programming 1 What is the Meaning of These Constant Interruptions? (2008)

Graham Hutton, Joel Wright

Asynchronous exceptions, or interrupts, are important for writing robust, modular programs, but are traditionally viewed as being difficult from a semantic perspective. In this article we present a...

Under consideration for publication in J. Functional Programming 1 Higher-Order Functions for Parsing∗ (2008)

Graham Hutton

In combinator parsing, the text of parsers resembles BNF notation. We present the basic method, and a number of extensions. We address the special problems presented by white– space, and parsers...

Chapter 1 Calculating an Exceptional Machine (Extended Version) (2008)

Graham Hutton, Joel Wright

Abstract: In previous work we showed how to verify a compiler for a small language with exceptions. In this article we show how to calculate, as opposed to verify, an abstract machine for this...

Under consideration for the Journal of Functional Programming 1 What is the Meaning of These Constant Interruptions? (2008)

Graham Hutton, Joel Wright

Asynchronous exceptions, or interrupts, are important for writing robust, modular programs, but are traditionally viewed as being difficult from a semantic perspective. In this article we present a...

Compiling Exceptions Correctly (Extended Version) (2007)

Graham Hutton, Joel Wright

Abstract. Exceptions are an important feature of modern programming languages, but their compilation has traditionally been viewed as an advanced topic. In this article we show that the basic method...

1 Monadic Parser Combinators (2007)

Graham Hutton, Graham Hutton, Erik Meijer, Erik Meijer

In functional programming, a popular approach to building recursive descent parsers is to model parsers as functions, and to define higher-order functions (or combinators) that implement grammar...

Haskell Communities and Activities Report (2007)

Andres Löh (ed, Lloyd Allison, Tiago Miguel, Laureano Alves, Krasimir Angelov, Carlos Areces, ...

You are reading the twelfth edition of the Haskell Communities and Activities Report – as always, containing entries from enthusiastic Haskellers all over the world. This edition has 138 entries,...

In preparation for submission to the Journal of Functional Programming 1 The Worker/Wrapper Transformation (2007)

Andy Gill, Graham Hutton

The worker/wrapper transformation is a technique for changing the type of a computation, usually with the aim of improving its performance. It has been used by compiler writers for many years, but...

In preparation for submission to the Journal of Functional Programming 1 The Worker/Wrapper Transformation (2007)

Andy Gill, Graham Hutton

The worker/wrapper transformation is a technique for changing the type of a computation, usually with the aim of improving its performance. It has been used by compiler writers for many years, but...

Haskell Communities and Activities Report (2006)

Andres Löh (ed, Lloyd Allison, Tiago Miguel, Laureano Alves, Krasimir Angelov, Dmitry Astapov, ...

Welcome to the eleventh edition of the Haskell Communities and Activities Report – a collection of entries about everything that is going on and related to Haskell in some way that appears twice a...

Haskell Communities and Activities Report (2006)

Andres Löh (ed, Lloyd Allison, Tiago Miguel, Laureano Alves, Krasimir Angelov, Dmitry Astapov, ...

This is the tenth edition of the Haskell Communities and Activities Report (HCAR) – a collection of entries about everything that is going on and related to Haskell in some way that appears twice a...

Report on BCTCS 2005 (2005)

Hutton, Graham

This report contains edited abstracts from BCTCS 2005, which was held on 22nd to 24th March 2005 in Nottingham, England.

Report on BCTCS 2005 (2005)

Hutton, Graham

This report contains edited abstracts from BCTCS 2005, which was held on 22nd to 24th March 2005 in Nottingham, England.

Report on BCTCS 2005 (2005)

Hutton, Graham

This report contains edited abstracts from BCTCS 2005, which was held on 22nd to 24th March 2005 in Nottingham, England.

Proof Methods for Corecursive Programs (2005)

Hutton, Graham, Gibbons, Jeremy

Recursion is a well-known and powerful programming technique, with a wide variety of applications. The dual technique of corecursion is less well-known, but is increasingly proving to be just as...

Proof Methods for Corecursive Programs (2005)

Hutton, Graham, Gibbons, Jeremy

Recursion is a well-known and powerful programming technique, with a wide variety of applications. The dual technique of corecursion is less well-known, but is increasingly proving to be just as...

Proof Methods for Corecursive Programs (2005)

Hutton, Graham, Gibbons, Jeremy

Recursion is a well-known and powerful programming technique, with a wide variety of applications. The dual technique of corecursion is less well-known, but is increasingly proving to be just as...

Calculating an Exceptional Machine (2005)

Hutton, Graham, Wright, Joel

In previous work we showed how to verify a compiler for a small language with exceptions. In this article we show how to calculate, as opposed to verify, an abstract machine for this language. The...

Accurate Step Counting (2005)

Hope, Catherine, Hutton, Graham

Starting with an evaluator for a language, an abstract machine for the same language can be mechanically derived using successive program transformations. This has relevance to studying both the...

Calculating an Exceptional Machine (2005)

Hutton, Graham, Wright, Joel

In previous work we showed how to verify a compiler for a small language with exceptions. In this article we show how to calculate, as opposed to verify, an abstract machine for this language. The...

Accurate Step Counting (2005)

Hope, Catherine, Hutton, Graham

Starting with an evaluator for a language, an abstract machine for the same language can be mechanically derived using successive program transformations. This has relevance to studying both the...

Accurate Step Counting (2005)

Catherine Hope, Graham Hutton

Abstract Starting with an evaluator for a language, an abstract machine for the same language can be mechanically derived using successive program transformations. This has relevance to studying both...

Proof Methods for Corecursive Programs (2005)

Jeremy Gibbons, Graham Hutton

Recursion is a well-known and powerful programming technique, with a wide variety of applications. The dual technique of corecursion is less well-known, but is increasingly proving to be just as...

Accurate Step Counting (2005)

Catherine Hope, Graham Hutton

Abstract Starting with an evaluator for a language, an abstract machine for the same language can be mechanically derived using successive program transformations. This has relevance to studying both...

Haskell Communities and Activities Report (2005)

Andres Löh (ed, Lloyd Allison, Tiago Miguel, Laureano Alves, Krasimir Angelov, Alistair Bayley, ...

Finally, here is the 9th edition of the Haskell Communities and Activities Report (HCAR), almost three weeks after the submission deadline. This delay is entirely my own fault. In fact, I have to...

Haskell Communities and Activities Report (2005)

Andres Löh (ed, Perry Alexander, Lloyd Allison, Tiago Miguel, Laureano Alves, Krasimir Angelov, ...

You are reading the 8th edition of the Haskell Communities and Activities Report (HCAR). These are interesting times to be a Haskell enthusiast. Everyone seems to be talking about darcs ( → 6.3)...

Calculating an Exceptional Machine (2005)

Hutton, Graham, Wright, Joel

In previous work we showed how to verify a compiler for a small language with exceptions. In this article we show how to calculate, as opposed to verify, an abstract machine for this language. The...

Accurate Step Counting (2005)

Hope, Catherine, Hutton, Graham

Starting with an evaluator for a language, an abstract machine for the same language can be mechanically derived using successive program transformations. This has relevance to studying both the...

Compiling Exceptions Correctly (2004)

Hutton, Graham, Wright, Joel

Exceptions are an important feature of modern programming languages, but their compilation has traditionally been viewed as an advanced topic. In this article we show that the basic method of...

Compiling Exceptions Correctly (2004)

Hutton, Graham, Wright, Joel

Exceptions are an important feature of modern programming languages, but their compilation has traditionally been viewed as an advanced topic. In this article we show that the basic method of...

Haskell Communities and Activities Report (2004)

Andres Löh (ed, Perry Alexander, Lloyd Allison, Krasimir Angelov, Alistair Bayley, Jérémy Bobbio, ...

Welcome to the Seventh edition of the Haskell Communities and Activities report. I can proudly announce that the report has survived yet another change of editor, and chances are good that this...

Compiling Exceptions Correctly (2004)

Graham Hutton, Joel Wright

Exceptions are an important feature of modern programming languages, but their compilation has traditionally been viewed as an advanced topic. In this article we show that the basic method of...

Compiling Exceptions Correctly (2004)

Hutton, Graham, Wright, Joel

Exceptions are an important feature of modern programming languages, but their compilation has traditionally been viewed as an advanced topic. In this article we show that the basic method of...

The Countdown Problem (2002)

Hutton, Graham

We systematically develop a functional program that solves the countdown problem, a numbers game in which the aim is to construct arithmetic expressions satisfying certain constraints. Starting from...

The Countdown Problem (2002)

Hutton, Graham

We systematically develop a functional program that solves the countdown problem, a numbers game in which the aim is to construct arithmetic expressions satisfying certain constraints. Starting from...

The Countdown Problem (2002)

Hutton, Graham

We systematically develop a functional program that solves the countdown problem, a numbers game in which the aim is to construct arithmetic expressions satisfying certain constraints. Starting from...

Functional Pearl: the countdown problem (2002)

Graham Hutton

We systematically develop a functional program that solves the countdown problem, a numbers game in which the aim is to construct arithmetic expressions satisfying certain constraints. Starting from...

The Generic Approximation Lemma (2001)

Hutton, Graham, Gibbons, Jeremy

The approximation lemma is a simplification of the well-known take lemma, and is used to prove properties of programs that produce lists of values. We show how the approximation lemma, unlike the...

The Generic Approximation Lemma (2001)

Hutton, Graham, Gibbons, Jeremy

The approximation lemma is a simplification of the well-known take lemma, and is used to prove properties of programs that produce lists of values. We show how the approximation lemma, unlike the...

The Generic Approximation Lemma (2001)

Hutton, Graham, Gibbons, Jeremy

The approximation lemma is a simplification of the well-known take lemma, and is used to prove properties of programs that produce lists of values. We show how the approximation lemma, unlike the...

When is a function a fold or an unfold (2001)

Jeremy Gibbons, Graham Hutton, Thorsten Altenkirch

We give a necessary and sufficient condition for when a set-theoretic function can be written using the recursion operator fold, and a dual condition for the recursion operator unfold. The conditions...

The generic approximation lemma (2001)

Graham Hutton, Jeremy Gibbons

The approximation lemma is a simplification of the well-known take lemma, and is used to prove properties of programs that produce lists of values. We show how the approximation lemma, unlike the...

When is a function a fold or an unfold (2001)

Jeremy Gibbons, Graham Hutton, Thorsten Altenkirch

We give a necessary and su#cient condition for when a set-theoretic function can be written using the recursion operator fold, and a dual condition for the recursion operator unfold. The conditions...

Abstract (2000)

Graham Hutton, Jeremy Gibbons

The approximation lemma is a simplification of the well-known take lemma, and is used to prove properties of programs that produce lists of values. We show how the approximation lemma, unlike the...

A Tutorial on the Universality and Expressiveness of Fold (1999)

Hutton, Graham

In functional programming, fold is a standard operator that encapsulates a simple pattern of recursion for processing lists. This article is a tutorial on two key aspects of the fold operator for...

A Tutorial on the Universality and Expressiveness of Fold (1999)

Hutton, Graham

In functional programming, fold is a standard operator that encapsulates a simple pattern of recursion for processing lists. This article is a tutorial on two key aspects of the fold operator for...

A Tutorial on the Universality and Expressiveness of Fold (1999)

Hutton, Graham

In functional programming, fold is a standard operator that encapsulates a simple pattern of recursion for processing lists. This article is a tutorial on two key aspects of the fold operator for...

Proof Methods for Structured Corecursive Programs (1999)

Gibbons, Jeremy, Hutton, Graham

Corecursive programs produce values of greatest fixpoint types, in contrast to recursive programs, which consume values of least fixpoint types. There are a number of widely used methods for proving...

Proof Methods for Structured Corecursive Programs (1999)

Gibbons, Jeremy, Hutton, Graham

Corecursive programs produce values of greatest fixpoint types, in contrast to recursive programs, which consume values of least fixpoint types. There are a number of widely used methods for proving...

Proof Methods for Structured Corecursive Programs (1999)

Jeremy Gibbons, Graham Hutton

Corecursive programs produce values of greatest fixpoint types, in contrast to recursive programs, which consume values of least fixpoint types. There are a number of widely used methods for proving...

Proof Methods for Structured Corecursive Programs (1999)

Jeremy Gibbons, Graham Hutton

Corecursive programs produce values of greatest fixpoint types, in contrast to recursive programs, which consume values of least fixpoint types. There are a number of widely used methods for proving...

A tutorial on the universality and expressiveness of fold (1999)

Graham Hutton

In functional programming, fold is a standard operator that encapsulates a simple pattern of recursion for processing lists. This article is a tutorial on two key aspects of the fold operator for...

Proof methods for structured corecursive programs (1999)

Jeremy Gibbons, Graham Hutton

Corecursive programs produce values of greatest fixpoint types, in contrast to recursive programs, which consume values of least fixpoint types. There are a number of widely used methods for proving...

Proof Methods for Structured Corecursive Programs (1999)

Gibbons, Jeremy, Hutton, Graham

Corecursive programs produce values of greatest fixpoint types, in contrast to recursive programs, which consume values of least fixpoint types. There are a number of widely used methods for proving...

Monadic Parsing in Haskell (1998)

Hutton, Graham, Meijer, Erik

This paper is a tutorial on defining recursive descent parsers in Haskell. In the spirit of one-stop shopping, the paper combines material from three areas into a single source. The three areas are...

Monadic Parsing in Haskell (1998)

Hutton, Graham, Meijer, Erik

This paper is a tutorial on defining recursive descent parsers in Haskell. In the spirit of one-stop shopping, the paper combines material from three areas into a single source. The three areas are...

Monadic Parsing in Haskell (1998)

Hutton, Graham, Meijer, Erik

This paper is a tutorial on defining recursive descent parsers in Haskell. In the spirit of one-stop shopping, the paper combines material from three areas into a single source. The three areas are...

Fold and Unfold for Program Semantics (1998)

Hutton, Graham

In this paper we explain how recursion operators can be used to structure and reason about program semantics within a functional language. In particular, we show how the recursion operator fold can...

Fold and Unfold for Program Semantics (1998)

Hutton, Graham

In this paper we explain how recursion operators can be used to structure and reason about program semantics within a functional language. In particular, we show how the recursion operator fold can...

Fold and Unfold for Program Semantics (1998)

Graham Hutton

In this paper we explain how recursion operators can be used to structure and reason about program semantics within a functional language. In particular, we show how the recursion operator fold can...

Monadic parsing in Haskell (1998)

Graham Hutton, Erik Meijer

This paper is a tutorial on defining recursive descent parsers in Haskell. In the spirit of one-stop shopping, the paper combines material from three areas into a single source. The three areas are...

Fold and Unfold for Program Semantics (1998)

Hutton, Graham

In this paper we explain how recursion operators can be used to structure and reason about program semantics within a functional language. In particular, we show how the recursion operator fold can...

Back to Basics: Deriving Representation Changers Functionally (1996)

Hutton, Graham, Meijer, Erik

Many functional programs can be viewed as representation changers, that is, as functions that convert abstract values from one concrete representation to another. Examples of such programs include...

Monadic Parser Combinators (1996)

Hutton, Graham, Meijer, Erik

In functional programming, a popular approach to building recursive descent parsers is to model parsers as functions, and to define higher-order functions (or combinators) that implement grammar...

Back to Basics: Deriving Representation Changers Functionally (1996)

Hutton, Graham, Meijer, Erik

Many functional programs can be viewed as representation changers, that is, as functions that convert abstract values from one concrete representation to another. Examples of such programs include...

Back to Basics: Deriving Representation Changers Functionally (1996)

Hutton, Graham, Meijer, Erik

Many functional programs can be viewed as representation changers, that is, as functions that convert abstract values from one concrete representation to another. Examples of such programs include...

Monadic Parser Combinators (1996)

Hutton, Graham, Meijer, Erik

In functional programming, a popular approach to building recursive descent parsers is to model parsers as functions, and to define higher-order functions (or combinators) that implement grammar...

Monadic Parser Combinators (1996)

Graham Hutton, Graham Hutton, Erik Meijer, Erik Meijer

In functional programming, a popular approach to building recursive descent parsers is to model parsers as functions, and to define higher-order functions (or combinators) that implement grammar...

Monadic Parser Combinators (1996)

Graham Hutton, Graham Hutton, Erik Meijer, Erik Meijer

In functional programming, a popular approach to building recursive descent parsers is to model parsers as functions, and to define higher-order functions (or combinators) that implement grammar...

Monadic Parser Combinators (1996)

Graham Hutton, Graham Hutton, Erik Meijer, Erik Meijer

In functional programming, a popular approach to building recursive descent parsers is to model parsers as functions, and to define higher-order functions (or combinators) that implement grammar...

Back to basics: Deriving representation changers functionally (1996)

Graham Hutton, Erik Meijer

value into a different concrete representation of that value. Many useful functions can be recognised as representation changers; examples include compilers, and arithmetic functions such as addition...

Monadic parser combinators (1996)

Graham Hutton, Graham Hutton, Erik Meijer, Erik Meijer

In functional programming, a popular approach to building recursive descent parsers is to model parsers as functions, and to define higher-order functions (or combinators) that implement grammar...

Monadic Parser Combinators (1996)

Hutton, Graham, Meijer, Erik

In functional programming, a popular approach to building recursive descent parsers is to model parsers as functions, and to define higher-order functions (or combinators) that implement grammar...

Bananas in space: Extending fold and unfold to exponential types (1995)

Erik Meijer, Graham Hutton

Fold and unfold are general purpose functionals for processing and constructing lists. By using the categorical approach of modelling recursive datatypes as fixed points of functors, these...

Categories, Allegories, and Circuit Design (1994)

Brown, Carolyn, Hutton, Graham

Languages based upon binary relations offer an appealing setting for constructing programs from specifications. For example, working with relations rather than functions allows specifications to be...

Categories, Allegories, and Circuit Design (1994)

Brown, Carolyn, Hutton, Graham

Languages based upon binary relations offer an appealing setting for constructing programs from specifications. For example, working with relations rather than functions allows specifications to be...

The Ruby Interpreter (1994)

Graham Hutton

Ruby is a relational language developed by Jones and Sheeran for describing and designing circuits. This document is a guide to the Ruby interpreter, which allows Ruby programs to be executed....

Categories, Allegories and Circuit Design (1994)

Carolyn Brown, Graham Hutton

Relational languages such as Ruby are used to derive hardware circuits from abstract specifications of their behaviour. Much reasoning is done informally in Ruby using pictorial representations of...

Contents (1994)

Graham Hutton

Ruby is a relational language developed by Jones and Sheeran for describing and designing circuits. This document is a guide to the

Categories, Allegories, and Circuit Design (1994)

Brown, Carolyn, Hutton, Graham

Languages based upon binary relations offer an appealing setting for constructing programs from specifications. For example, working with relations rather than functions allows specifications to be...

The Ruby Interpreter (1993)

Hutton, Graham

Ruby is a relational calculus for designing digital circuits. This document is a guide to the Ruby interpreter, which allows a special class of ``implementable'' Ruby programs to be executed. The...

The Ruby Interpreter (1993)

Hutton, Graham

Ruby is a relational calculus for designing digital circuits. This document is a guide to the Ruby interpreter, which allows a special class of $quot;implementable$quot; Ruby programs to be executed....

The Ruby Interpreter (1993)

Hutton, Graham

Ruby is a relational calculus for designing digital circuits. This document is a guide to the Ruby interpreter, which allows a special class of $quot;implementable$quot; Ruby programs to be executed....

Higher-Order Functions for parsing (1993)

Graham Hutton

In combinator parsing, the text of parsers resembles BNF notation. We present the basic method, and a number of extensions. We address the special problems presented by white-- space, and parsers...

A Tutorial on the Universality and Expressiveness of Fold (1993)

Graham Hutton

In functional programming, fold is a standard operator that encapsulates a simple pattern of recursion for processing lists. This article is a tutorial on two key aspects of the fold operator for...

Back to Basics: Deriving Representation Changers Functionally (1993)

Graham Hutton, Erik Meijer

A representation changer is a function that converts a concrete representation of an abstract value into a different concrete representation of that value. Many useful functions can be recognised as...

Monadic Parsing in Haskell (1993)

Graham Hutton, Erik Meijer

This paper is a tutorial on defining recursive descent parsers in Haskell. In the spirit of one-stop shopping , the paper combines material from three areas into a single source. The three areas are...

Higher-Order Functions for Parsing (1992)

Hutton, Graham

In combinator parsing, the text of parsers resembles BNF notation. We present the basic method, and a number of extensions. We address the special problems presented by white-space, and parsers with...

Higher-Order Functions for Parsing (1992)

Hutton, Graham

In combinator parsing, the text of parsers resembles BNF notation. We present the basic method, and a number of extensions. We address the special problems presented by white-space, and parsers with...

Higher-Order Functions for Parsing (1992)

Hutton, Graham

In combinator parsing, the text of parsers resembles BNF notation. We present the basic method, and a number of extensions. We address the special problems presented by white-space, and parsers with...

Making Functionality More General (1992)

Hutton, Graham, Voermans, Ed

The definition for the notion of a "function" is not cast in stone, but depends upon what we adopt as types in our language. With partial equivalence relations (pers) as types in a relational...

A Calculational Theory of Pers as Types (1992)

Hutton, Graham, Voermans, Ed

In the calculational approach to programming, programs are derived from specifications by algebraic reasoning. This report presents a calculational programming framework based upon the notion of...

A Relational Derivation of a Functional Program (1992)

Hutton, Graham

This article is an introduction to the use of relational calculi in deriving programs. Using the relational caluclus Ruby, we derive a functional program that adds one bit to a binary number to give...

A Calculational Theory of Pers as Types (1992)

Hutton, Graham, Voermans, Ed

In the calculational approach to programming, programs are derived from specifications by algebraic reasoning. This report presents a calculational programming framework based upon the notion of...

A Calculational Theory of Pers as Types (1992)

Hutton, Graham, Voermans, Ed

In the calculational approach to programming, programs are derived from specifications by algebraic reasoning. This report presents a calculational programming framework based upon the notion of...

Making Functionality More General (1992)

Hutton, Graham, Voermans, Ed

The definition for the notion of a "function" is not cast in stone, but depends upon what we adopt as types in our language. With partial equivalence relations (pers) as types in a relational...

A Relational Derivation of a Functional Program (1992)

Hutton, Graham

This article is an introduction to the use of relational calculi in deriving programs. Using the relational caluclus Ruby, we derive a functional program that adds one bit to a binary number to give...

A Relational Derivation of a Functional Program (1992)

Graham Hutton

This article is an introduction to the use of relational calculi in deriving programs. We present a derivation in a relational language of a functional program that adds one bit to a binary number....

Making Functionality More General (1992)

Graham Hutton

The notion of functionality is not cast in stone, but depends upon what we have as types in our language. With partial equivalence relations (pers) as types we show that the functional relations are...

A Calculational Theory of Pers as Types (1992)

Graham Hutton, Ed Voermans

We present a programming paradigm based upon the notion of binary relations as programs, and partial equivalence relations (pers) as types. Our method is calculational , in that programs are derived...

A relational derivation of a functional program (1992)

Graham Hutton

This article is an introduction to the use of relational calculi in deriving programs. We present a derivation in a relational language of a functional program that adds one bit to a binary number....

A calculational theory of pers as types (1992)

Graham Hutton

We present a programming paradigm based upon the notion of binary relations as programs, and partial equivalence relations (pers) as types. Our method is calculational, in that programs are derived...

Making Functionality More General (1992)

Hutton, Graham, Voermans, Ed

The definition for the notion of a "function" is not cast in stone, but depends upon what we adopt as types in our language. With partial equivalence relations (pers) as types in a relational...

A Relational Derivation of a Functional Program (1992)

Hutton, Graham

This article is an introduction to the use of relational calculi in deriving programs. Using the relational caluclus Ruby, we derive a functional program that adds one bit to a binary number to give...

Functional Programming With Relations (1991)

Hutton, Graham

While programming in a relational framework has much to offer over the functional style in terms of expressiveness, computing with relations is less efficient, and more semantically troublesome. In...

Functional Programming With Relations (1991)

Hutton, Graham

While programming in a relational framework has much to offer over the functional style in terms of expressiveness, computing with relations is less efficient, and more semantically troublesome. In...

Making functionality more general (1991)

Graham Hutton

The notion of functionality is not cast in stone, but depends upon what we have as types in our language. With partial equivalence relations (pers) as types we show that the functional relations are...

Functional Programming With Relations (1991)

Hutton, Graham

While programming in a relational framework has much to offer over the functional style in terms of expressiveness, computing with relations is less efficient, and more semantically troublesome. In...

Functional Programming with Relations (1990)

Graham Hutton

While programming in a relational framework has much to offer over the functional style in terms of expressiveness, computing with relations is less efficient, and more semantically troublesome. In...

Functional Programming with Relations (1990)

Graham Hutton

While programming in a relational framework has much to o er over the functional style in terms of expressiveness, computing with relations is less e cient, and more semantically troublesome. In this...