Results

**1 - 6**of**6**### Semantics-Preserving Transformation Sean Leather

, 2013

"... We have identified a class of regular, whole-program transformations that cannot be safely performed with typical transformation techniques because transformation requires changing the types of terms. In these transformations, we want to change typically large parts of a program from using one type ..."

Abstract
- Add to MetaCart

We have identified a class of regular, whole-program transformations that cannot be safely performed with typical transformation techniques because transformation requires changing the types of terms. In these transformations, we want to change typically large parts of a program from using one type to using another type while simultaneously preserving the original program semantics after transformation. In this paper, we present type-and-transform systems, an automated approach to the whole-program transformation of terms involving type A to terms involving the isomorphic type B using typechanging rewrite rules. Type-and-transform systems establish typing and semantics relations between all source and target subprograms such that a complete transformation can guarantee the equivalent semantics of a whole program. We describe the type-andtransform system for the lambda calculus with let-polymorphism and general recursion, including several examples from the literature and properties of the system.

### On Understanding Data . . .

, 2009

"... In 1985 Luca Cardelli and Peter Wegner, my advisor, published an ACM Computing Surveys paper called “On understanding types, data abstraction, and polymorphism”. Their work kicked off a flood of research on semantics and type theory for object-oriented programming, which continues to this day. Despi ..."

Abstract
- Add to MetaCart

In 1985 Luca Cardelli and Peter Wegner, my advisor, published an ACM Computing Surveys paper called “On understanding types, data abstraction, and polymorphism”. Their work kicked off a flood of research on semantics and type theory for object-oriented programming, which continues to this day. Despite 25 years of research, there is still widespread confusion about the two forms of data abstraction, abstract data types and objects. This essay attempts to explain the differences and also why the differences matter.

### Reusability and Dependent Types: Case for Support

"... Robin Milner coined the slogan well typed programs cannot go wrong, advertising the power of types in functional lan-guages like ML and Haskell to catch runtime errors. Nowadays, we can and should go further: dependently typed pro-gramming exploits the power of very expressive type systems to delive ..."

Abstract
- Add to MetaCart

(Show Context)
Robin Milner coined the slogan well typed programs cannot go wrong, advertising the power of types in functional lan-guages like ML and Haskell to catch runtime errors. Nowadays, we can and should go further: dependently typed pro-gramming exploits the power of very expressive type systems to deliver stronger guarantees but also additional support for software development, using types to guide the development process. This is witnessed by a recent surge of language proposals with the goal to harness the power of dependent types, e.g. Haskell with GADTs [84, 85], Agda [90], Coq [18], Ωmega [88], Concoqtion [83], Guru [89], Ynot [77], Epigram [68], and so on. However, expressive type systems have their price: more specific types frequently reduce the reusability of code, whose too-specific implementation type may not fit its current application. This phenomenon already shows up in the traditional Hindley-Milner style type system of ML and Haskell; it becomes even more prevalent in a dependently typed setting. Luckily, all is not lost: dependent types are expressive enough that they can talk about themselves reflectively, makingmeta-programming one of their potential killer applications [11], with the potential to combine expressive types and reusable software components. Based on and inspired by recent research at Nottingham on dependently typed programming (EPSRC EP/C512022/1) and container types (EPSRC EP/C511964/2) and at Oxford on datatype-generic programming (EPSRC GR/S27078/01, EP/E02128X/1) we plan to explore the potential of dependent types to deliver reusable and reliable software components. To

### Generic Programming for Indexed Datatypes

- WGP'11
, 2011

"... An indexed datatype is a type that uses a parameter as a type-level tag; a typical example is the type of vectors, which are indexed over a type-level natural number encoding their length. Since the introduction of generalised algebraic datatypes, indexed datatypes have become commonplace in Haskell ..."

Abstract
- Add to MetaCart

An indexed datatype is a type that uses a parameter as a type-level tag; a typical example is the type of vectors, which are indexed over a type-level natural number encoding their length. Since the introduction of generalised algebraic datatypes, indexed datatypes have become commonplace in Haskell. Values of indexed datatypes are often more involved than values of plain datatypes, and programmers would benefit from having generic programs on indexed datatypes. However, no generic programming library adequately supports them, leaving programmers with the tedious task of writing repetitive code. We show how to encode indexed datatypes in a generic programming library with type families and type-level representations in Haskell. Our approach can also be used in similar libraries, and is fully backwards-compatible. We show not only how to encode indexed datatypes generically, but also how to instantiate generic functions on indexed datatypes. Furthermore, all generic representations and instances are generated automatically, making life easier for users.

### General Terms

"... This paper describes how to use the Microsoft DSL Tools to construct the Interactive Television Applications system as an ..."

Abstract
- Add to MetaCart

This paper describes how to use the Microsoft DSL Tools to construct the Interactive Television Applications system as an

### ISSN: 1955-611XTime in discrete agent-based models of socio-economic systems

, 2010

"... We formulate the problem of computing time in discrete dynamical agent-based models in the context of socio-economic modeling. For such formulation, we outline a simple solution. This requires minimal extensions of the original untimed model. The proposed solution relies on the notion of agent-speci ..."

Abstract
- Add to MetaCart

(Show Context)
We formulate the problem of computing time in discrete dynamical agent-based models in the context of socio-economic modeling. For such formulation, we outline a simple solution. This requires minimal extensions of the original untimed model. The proposed solution relies on the notion of agent-specific schedules of action and on two modeling assumptions. These are fulfilled by most models of practical interest. For models for which stronger assumptions can be made, we discuss alternative formulations. halshs-00542250, version 1- 2 Dec 2010 1