Network


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

Hotspot


Dive into the research topics where Jeremy Yallop is active.

Publication


Featured researches published by Jeremy Yallop.


Electronic Notes in Theoretical Computer Science | 2011

Idioms are Oblivious, Arrows are Meticulous, Monads are Promiscuous

Sam Lindley; Philip Wadler; Jeremy Yallop

We revisit the connection between three notions of computation: Moggi?s monads, Hughes?s arrows and McBride and Paterson?s idioms (also called applicative functors). We show that idioms are equivalent to arrows that satisfy the type isomorphism A?B?1?(A?B) and that monads are equivalent to arrows that satisfy the type isomorphism A?B?A?(1?B). Further, idioms embed into arrows and arrows embed into monads.


symposium/workshop on haskell | 2009

Unembedding domain-specific languages

Robert Atkey; Sam Lindley; Jeremy Yallop

Higher-order abstract syntax provides a convenient way of embedding domain-specific languages, but is awkward to analyse and manipulate directly. We explore the boundaries of higher-order abstract syntax. Our key tool is the unembedding of embedded terms as de Bruijn terms, enabling intensional analysis. As part of our solution we present techniques for separating the definition of an embedded program from its interpretation, giving modular extensions of the embedded language, and different ways to encode the types of the embedded language.


Journal of Functional Programming | 2010

The arrow calculus

Sam Lindley; Philip Wadler; Jeremy Yallop

We introduce the arrow calculus, a metalanguage for manipulating Hughess arrows with close relations both to Moggis metalanguage for monads and to Patersons arrow notation. Arrows are classically defined by extending lambda calculus with three constructs satisfying nine (somewhat idiosyncratic) laws; in contrast, the arrow calculus adds four constructs satisfying five laws (which fit two well-known patterns). The five laws were previously known to be sound; we show that they are also complete, and hence that the five laws may replace the nine.


asian symposium on programming languages and systems | 2008

The Essence of Form Abstraction

Ezra Cooper; Sam Lindley; Philip Wadler; Jeremy Yallop

Abstraction is the cornerstone of high-level programming; HTML forms are the principal medium of web interaction. However, most web programming environments do not support abstraction of form components, leading to a lack of compositionality. Using a semantics based on idioms, we show how to support compositional form construction and give a convenient syntax.


Machine Learning | 2007

Practical generic programming in OCaml

Jeremy Yallop

We describe deriving, a system of extensible generic functions for OCaml implemented as a preprocessor and supporting library. We argue that generating code from type-definitions has significant advantages over a combinator approach, taking serialisation as an example application: our generate-your-boilerplate design results in a system that is easy to use, has comprehensive coverage of types and handles cyclic values without imposing a burden on the user. Users can extend generic functions with specialised implementations at particular types; we show how this can lead to dramatically improved performance in the serialisation task without the user writing a single line of serialisation code.


meeting of the association for computational linguistics | 2005

Automatic Acquisition of Adjectival Subcategorization from Corpora

Jeremy Yallop; Anna Korhonen; Ted Briscoe

This paper describes a novel system for acquiring adjectival subcategorization frames (SCFs) and associated frequency information from English corpus data. The system incorporates a decision-tree classifier for 30 SCF types which tests for the presence of grammatical relations (GRs) in the output of a robust statistical parser. It uses a powerful pattern-matching language to classify GRs into frames hierarchically in a way that mirrors inheritance-based lexica. The experiments show that the system is able to detect SCF types with 70% precision and 66% recall rate. A new tool for linguistic annotation of SCFs in corpus data is also introduced which can considerably alleviate the process of obtaining training and test data for subcategorization acquisition.


Proceedings of the ACM on Programming Languages | 2017

Staged generic programming

Jeremy Yallop

Generic programming libraries such as Scrap Your Boilerplate eliminate the need to write repetitive code, but typically introduce significant performance overheads. This leaves programmers with the regrettable choice between writing succinct but slow programs and writing tedious but efficient programs. Applying structured multi-stage programming techniques transforms Scrap Your Boilerplate from an inefficient library into a typed optimising code generator, bringing its performance in line with hand-written code, and so combining high-level programming with uncompromised performance.


international symposium on functional and logic programming | 2014

Lightweight Higher-Kinded Polymorphism

Jeremy Yallop; Leo White

Higher-kinded polymorphism —i.e. abstraction over type constructors— is an essential component of many functional programming techniques such as monads, folds, and embedded DSLs. ML-family languages typically support a form of abstraction over type constructors using functors, but the separation between the core language and the module language leads to awkwardness as functors proliferate.


partial evaluation and semantic-based program manipulation | 2016

Staging generic programming

Jeremy Yallop

Generic programming libraries such as Scrap Your Boilerplate eliminate the need to write repetitive code, but typically introduce significant performance overheads. This leaves programmers with the unfortunate choice of writing succinct but slow programs or writing tedious but efficient programs. We show how to systematically transform an implementation of the Scrap Your Boilerplate library in the multi-stage programming language MetaOCaml to eliminate the overhead, making it possible to combine the benefits of high-level abstract programming with the efficiency of low-level code.


international symposium on haskell | 2016

Causal commutative arrows revisited

Jeremy Yallop; Hai Liu

Causal commutative arrows (CCA) extend arrows with additional constructs and laws that make them suitable for modelling domains such as functional reactive programming, differential equations and synchronous dataflow. Earlier work has revealed that a syntactic transformation of CCA computations into normal form can result in significant performance improvements, sometimes increasing the speed of programs by orders of magnitude. In this work we reformulate the normalization as a type class instance and derive optimized observation functions via a specialization to stream transformers to demonstrate that the same dramatic improvements can be achieved without leaving the language.

Collaboration


Dive into the Jeremy Yallop's collaboration.

Top Co-Authors

Avatar
Top Co-Authors

Avatar

Sam Lindley

University of Edinburgh

View shared research outputs
Top Co-Authors

Avatar

Ezra Cooper

University of Edinburgh

View shared research outputs
Top Co-Authors

Avatar

Leo White

University of Cambridge

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

David Sheets

University of Cambridge

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Xavier Leroy

École Normale Supérieure

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Researchain Logo
Decentralizing Knowledge