Network


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

Hotspot


Dive into the research topics where Simon L. Peyton Jones is active.

Publication


Featured researches published by Simon L. Peyton Jones.


symposium on principles of programming languages | 1993

Imperative functional programming

Simon L. Peyton Jones; Philip Wadler

We present a new model, based on monads, for performing input/output in a non-strict, purely functional language. It is composable, extensible, efficient, requires no extensions to the type system, and extends smoothly to incorporate mixed-language working and in-place array updates.


symposium/workshop on haskell | 2002

Template meta-programming for Haskell

Tim Sheard; Simon L. Peyton Jones

We propose a new extension to the purely functional programming language Haskell that supports compile-time meta-programming. The purpose of the system is to support the algorithmic construction of programs at compile-time.The ability to generate code at compile time allows the programmer to implement such features as polytypic programs, macro-like expansion, user directed optimization (such as inlining), and the generation of supporting data structures and functions from existing data structures and functions.Our design is being implemented in the Glasgow Haskell Compiler, ghc.


symposium on principles of programming languages | 1996

Concurrent Haskell

Simon L. Peyton Jones; Andrew D. Gordon; Sigbjorn Finne

Some applications are most easily expressed in a programming language that supports concurrency, notably interactive and distributed systems. We propose extensions to the purely-functional language Haskell that allow it to express explicitly concurrent applications; we call the resulting language Concurrent Haskell. The resulting system appears to be both expressive and efficient, and we give a number of examples of useful abstractions that can be built from our primitives. We have developed a freely-available implementation of Concurrent Haskell, and are now using it as a substrate for a graphical user interface toolkit.


Journal of Functional Programming | 1992

Implementing lazy functional languages on stock hardware: the Spineless Tagless G-machine

Simon L. Peyton Jones

The Spineless Tagless G-machine is an abstract machine designed to support non-strict higher-order functional languages. This presentation of the machine falls into three parts. Firstly, we give a general discussion of the design issues involved in implementing non-strict functional languages. Next, we present the STG language, an austere but recognizably-functional language, which as well as a denotational meaning has a well-defined operational semantics. The STG language is the ‘abstract machine code’ for the Spineless Tagless G-machine. Lastly, we discuss the mapping of the STG language onto stock hardware. The success of an abstract machine model depends largely on how efficient this mapping can be made, though this topic is often relegated to a short section. Instead, we give a detailed discussion of the design issues and the choices we have made. Our principal target is the C language, treating the C compiler as a portable assembler.


ACM Transactions on Programming Languages and Systems | 1996

Type classes in Haskell

Cordelia V. Hall; Kevin Hammond; Simon L. Peyton Jones; Philip Wadler

This article defines a set of type inference rules for resolving overloading introduced by type classes, as used in the functional programming language Haskell. Programs including type classes are transformed into ones which may be typed by standard Hindley-Milner inference rules. In contrast to other work on type classes, the rules presented here relate directly to Haskell programs. An innovative aspect of this work is the use of second-order lambda calculus to record type information in the transformed program.


acm sigplan conference on history of programming languages | 2007

A history of Haskell: being lazy with class

Paul Hudak; John Hughes; Simon L. Peyton Jones; Philip Wadler

This paper describes the history of Haskell, including its genesis and principles, technical contributions, implementations and tools, and applications and impact.


international conference on functional programming | 1991

Unboxed values as first class citizens in a non-strict functional language

Simon L. Peyton Jones; John Launchbury

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 boxed numbers into simpler operations on their unboxed forms. These optimisations are usually handled in an ad hoc manner in the code generator, because earlier phases of the compiler have no way to talk about unboxed values.


Higher-order and Symbolic Computation \/ Lisp and Symbolic Computation | 1995

State in Haskell

John Launchbury; Simon L. Peyton Jones

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 securely encapsulating stateful computations that manipulate multiple, named, mutable objects, in the context of a non-strict, purely-functional language. The security of the encapsulation is assured by the type system, using parametricity. The same framework is also used to handle input/output operations (state changes on the external world) and calls to C.


types in languages design and implementation | 2007

System F with type equality coercions

Martin Sulzmann; Manuel M. T. Chakravarty; Simon L. Peyton Jones; Kevin Donnelly

We introduce System FC, which extends System F with support for non-syntactic type equality. There are two main extensions: (i) explicit witnesses for type equalities, and (ii) open, non-parametric type functions, given meaning by top-level equality axioms. Unlike System F, FC is expressive enough to serve as a target for several different source-language features, including Haskells newtype, generalised algebraic data types, associated types, functional dependencies, and perhaps more besides.


programming language design and implementation | 1994

Lazy functional state threads

John Launchbury; Simon L. Peyton Jones

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 securely encapsulating stateful computations that manipulate multiple, named, mutable objects, in the context of a non-strict, purely-functional language. The security of the encapsulation is assured by the type system, using parametricity. Intriguingly, this parametricity requires the provision of a (single) constant with a rank-2 polymorphic type.

Collaboration


Dive into the Simon L. Peyton Jones's collaboration.

Top Co-Authors

Avatar
Top Co-Authors

Avatar

Kevin Hammond

University of St Andrews

View shared research outputs
Top Co-Authors

Avatar

Stephanie Weirich

University of Pennsylvania

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

Gabriele Keller

University of New South Wales

View shared research outputs
Researchain Logo
Decentralizing Knowledge