Network


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

Hotspot


Dive into the research topics where Mark B. Shields is active.

Publication


Featured researches published by Mark B. Shields.


Journal of Functional Programming | 2007

Practical type inference for arbitrary-rank types

Simon L. Peyton Jones; Dimitrios Vytiniotis; Stephanie Weirich; Mark B. Shields

Haskells popularity has driven the need for ever more expressive type system features, most of which threaten the decidability and practicality of Damas-Milner type inference. One such feature is the ability to write functions with higher-rank types – that is, functions that take polymorphic functions as their arguments. Complete type inference is known to be undecidable for higher-rank (impredicative) type systems, but in practice programmers are more than willing to add type annotations to guide the type inference engine, and to document their code. However, the choice of just what annotations are required, and what changes are required in the type system and its inference algorithm, has been an ongoing topic of research. We take as our starting point a


symposium on principles of programming languages | 2000

Implicit parameters: dynamic scoping with static types

Jeffrey R. Lewis; John Launchbury; Erik Meijer; Mark B. Shields

\lambda


symposium on principles of programming languages | 1998

Bridging the gulf: a common intermediate language for ML and Haskell

Simon L. Peyton Jones; Mark B. Shields; John Launchbury; Andrew Tolmach

-calculus proposed by Odersky and Laufer. Their system supports arbitrary-rank polymorphism through the exploitation of type annotations on


Electronic Notes in Theoretical Computer Science | 2001

Object-Oriented Style Overloading for Haskell (Extended Abstract)

Mark B. Shields; Simon L. Peyton Jones

\lambda


Archive | 2000

XMlambda - A Functional Language for Constructing and Manipulating XML Documents

Erik Meijer; Mark B. Shields

-bound arguments and arbitrary sub-terms. Though elegant, and more convenient than some other proposals, Odersky and Laufers system requires many annotations. We show how to use local type inference (invented by Pierce and Turner) to greatly reduce the annotation burden, to the point where higher-rank types become eminently usable. Higher-rank types have a very modest impact on type inference. We substantiate this claim in a very concrete way, by presenting a complete type-inference engine, written in Haskell, for a traditional Damas-Milner type system, and then showing how to extend it for higher-rank types. We write the type-inference engine using a monadic framework: it turns out to be a particularly compelling example of monads in action. The paper is long, but is strongly tutorial in style. Although we use Haskell as our example source language, and our implementation language, much of our work is directly applicable to any ML-like functional language.


symposium on principles of programming languages | 2001

Type-indexed rows

Mark B. Shields; Erik Meijer

This paper introduces a language feature, called implicit parameters, that provides dynamically scoped variables within a statically-typed Hindley-Milner framework. Implicit parameters are lexically distinct from regular identifiers, and are bound by a special with construct whose scope is dynamic, rather than static as with let. Implicit parameters are treated by the type system as parameters that are not explicitly declared, but are inferred from their use. We present implicit parameters within a small call-by-name λ-calculus. We give a type system, a type inference algorithm, and several semantics. We also explore implicit parameters in the wider settings of call-by-need languages with overloading, and call-by-value languages with effects. As a witness to the former, we have implemented implicit parameters as an extension of Haskell within the Hugs interpreter, which we use to present several motivating examples.


international conference on functional programming | 2002

Lexically scoped type variables

Simon L. Peyton Jones; Mark B. Shields

Compilers for ML and Haskell use intermediate languages that incorporate deeply-embedded assumptions about order of evaluation and side effects. We propose an intermediate language into which one can compile both ML and Haskell, thereby facilitating the sharing of ideas and infrastructure, and supporting language developments that move each language in the direction of the other. Achieving this goal without compromising the ability to Compile as good code as a more direct route turned out to be much more subtle than we expected. We address this challenge using monads and unpointed types, identify two alternative language designs, and explore the choices they embody.


Archive | 2007

TIER SPLITTING SUPPORT FOR DISTRIBUTED EXECUTION ENVIRONMENTS

Henricus Johannes Maria Meijer; Brian C. Beckman; Christopher W. Brumme; Mark B. Shields; Wei Zhu

Haskell has a sophisticated mechanism for overloading identiflers with multiple deflnitions at distinct types. Object-oriented programming has a similar notion of overriding and overloading for methods names. Unfortunately, it is not possible to encode object-oriented overloading directly using Haskell overloading. This deflciency becomes particularly tiresome when Haskell programs wish to call methods imported from an object-oriented library. We present two reflnements of Haskell’s type class system: Closed classes and overlapping instances. We demonstrate how we may exploit the reflned system so as to be able to encode object-oriented classes within Haskell. This encoding allows us to mimic, within Haskell, the overloading resolution rules employed by object-oriented languages without the need for additional type annotations or name mangling. As a consequence, object-oriented class libraries are very convenient to import and use within Haskell.


Theoretical Computer Science | 2001

Object-Oriented Style Overloading for Haskell

Mark B. Shields; Simon Peyton-Jones


Archive | 2007

SELF-DESCRIBING WEB DATA STORAGE MODEL

Henricus Johannes Maria Meijer; Mark B. Shields; Soumitra Sengupta

Collaboration


Dive into the Mark B. Shields's collaboration.

Researchain Logo
Decentralizing Knowledge