Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Ross Paterson is active.

Publication


Featured researches published by Ross Paterson.


international conference on functional programming | 1991

Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire

Erik Meijer; Maarten M. Fokkinga; Ross Paterson

We develop a calculus for lazy functional programming based on recursion operators associated with data type definitions. For these operators we derive various algebraic laws that are useful in deriving and manipulating programs. We shall show that all example functions in Bird and Wadlers Introduction to Functional Programming can be expressed using these operators.


Journal of Functional Programming | 2008

Applicative programming with effects

Conor McBride; Ross Paterson

In this article, we introduce Applicative functors – an abstract characterisation of an applicative style of effectful programming, weaker than Monads and hence more widespread. Indeed, it is the ubiquity of this programming pattern that drew us to the abstraction. We retrace our steps in this article, introducing the applicative pattern by diverse examples, then abstracting it to define the Applicative type class and introducing a bracket notation that interprets the normal application syntax in the idiom of an Applicative functor. Furthermore, we develop the properties of applicative functors and the generic operations they support. We close by identifying the categorical structure of applicative functors and examining their relationship both with Monads and with Arrow.


Journal of Functional Programming | 1999

de Bruijn notation as a nested datatype

Richard S. Bird; Ross Paterson

“I have no data yet. It is a capital mistake to theorise before one has data.” Sir Arthur Conan Doyle The Adventures of Sherlock Holmesde Bruijn notation is a coding of lambda terms in which each occurrence of a bound variable x is replaced by a natural number, indicating the ‘distance’ from the occurrence to the abstraction that introduced x. One might suppose that in any datatype for representing de Bruijn terms, the distance restriction on numbers would have to be maintained as an explicit datatype invariant. However, by using a nested (or non-regular) datatype, we can define a representation in which all terms are well-formed, so that the invariant is enforced automatically by the type system. Programming with nested types is only a little more difficult than programming with regular types, provided we stick to well-established structuring techniques. These involve expressing inductively defined functions in terms of an appropriate fold function for the type, and using fusion laws to establish their properties. In particular, the definition of lambda abstraction and beta reduction is particularly simple, and the proof of their associated properties is entirely mechanical.


Formal Aspects of Computing | 1999

Generalised folds for nested datatypes

Richard S. Bird; Ross Paterson

Abstract. Nested datatypes generalise regular datatypes in much the same way that context-free languages generalise regular ones. Although the categorical semantics of nested types turns out to be similar to the regular case, the fold functions are more limited because they can only describe natural transformations. Practical considerations therefore dictate the introduction of a generalised fold function in which this limitation can be overcome. In the paper we show how to construct generalised folds systematically for each nested datatype, and show that they possess a uniqueness property analogous to that of ordinary folds. As a consequence, generalised folds satisfy fusion properties similar to those developed for regular datatypes. Such properties form the core of an effective calculational theory of inductive datatypes.


Journal of Functional Programming | 2006

Finger trees: a simple general-purpose data structure

Ralf Hinze; Ross Paterson

We introduce 2-3 finger trees, a functional representation of persistent sequences supporting access to the ends in amortized constant time, and concatenation and splitting in time logarithmic in the size of the smaller piece. Representations achieving these bounds have appeared previously, but 2-3 finger trees are much simpler, as are the operations on them. Further, by defining the split operation in a general form, we obtain a general purpose data structure that can serve as a sequence, priority queue, search tree, priority search queue and more.


european symposium on programming | 1996

Parametricity and Unboxing with Unpointed Types

John Launchbury; Ross Paterson

In lazy functional languages, ⊥ is typically an element of every type. While this provides great flexibility, it also comes at a cost. In this paper we explore the consequences of allowing unpointed types in a lazy functional language like Haskell. We use the type (and class) system to keep track of pointedness, and show the consequences for parametricity and for controlling evaluation order and unboxing.


hawaii international conference on system sciences | 1993

pi -calculus semantics for the concurrent configuration language Darwin

Susan Eisenbach; Ross Paterson

Darwin is a configuration language for distributed and parallel programs, providing a hierarchical structure of components with dynamic binding. To specify precisely the behavior of Darwin programs, the authors sketch a translation of the features of the language into the pi -calculus, a formalism for modeling concurrent processes. The match between underlying models for Darwin and pi -calculus is good. An example to demonstrate each language is developed. This is followed by a formal semantics of Darwin in the calculus.<<ETX>>


mathematics of program construction | 2012

Constructing applicative functors

Ross Paterson

Applicative functors define an interface to computation that is more general, and correspondingly weaker, than that of monads. First used in parser libraries, they are now seeing a wide range of applications. This paper sets out to explore the space of non-monadic applicative functors useful in programming. We work with a generalization, lax monoidal functors, and consider several methods of constructing useful functors of this type, just as transformers are used to construct computational monads. For example, coends, familiar to functional programmers as existential types, yield a range of useful applicative functors, including left Kan extensions. Other constructions are final fixed points, a limited sum construction, and a generalization of the semi-direct product of monoids. Implementations in Haskell are included where possible.


static analysis symposium | 1996

Compiling Laziness Using Projections

Ross Paterson

Projection-based strictness analysis is a powerful technique, able to cope with non-flat domains and latent demand. By analysing the projections as embedding-projection pairs, we develop an algorithm to translate lazy functions into a strict functional language with explicit closures. The translated functions typically operate on simpler types than the originals, in particular types containing fewer liftings, which correspond to the operational notion of closures. Like the analysis on which it is based, our algorithm is restricted to first-order functions.


Seminar and Workshop on Declarative Programming | 1991

A Tiny Functional Language with Logical Features

Ross Paterson

The non-deterministic lambda-calculus is a tiny core language in terms of which all the declaratively understood constructs of constraint functional languages may be defined. This paper describes a denotational semantics based on lower powerdomains, and a polymorphic type system. The calculus has a confluent operational semantics, which may be formulated in several ways—an extension of de Bruijn’s calculus is used here.

Collaboration


Dive into the Ross Paterson's collaboration.

Top Co-Authors

Avatar

Jean-Philippe Bernardy

Chalmers University of Technology

View shared research outputs
Top Co-Authors

Avatar

Patrik Jansson

Chalmers University of Technology

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Conor McBride

University of Strathclyde

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Researchain Logo
Decentralizing Knowledge