Catálogo de publicaciones - libros

Compartir en
redes sociales


Programming Languages and Systems: 4th Asian Symposium, APLAS 2006, Sydney, Australia, November 8-10, 2006, Proceedings

Naoki Kobayashi (eds.)

En conferencia: 4º Asian Symposium on Programming Languages and Systems (APLAS) . Sydney, NSW, Australia . November 8, 2006 - November 10, 2006

Resumen/Descripción – provisto por la editorial

No disponible.

Palabras clave – provistas por la editorial

No disponibles.

Disponibilidad
Institución detectada Año de publicación Navegá Descargá Solicitá
No detectada 2006 SpringerLink

Información

Tipo de recurso:

libros

ISBN impreso

978-3-540-48937-5

ISBN electrónico

978-3-540-48938-2

Editor responsable

Springer Nature

País de edición

Reino Unido

Fecha de publicación

Información sobre derechos de publicación

© Springer-Verlag Berlin Heidelberg 2006

Tabla de contenidos

Type Processing by Constraint Reasoning

Peter J. Stuckey; Martin Sulzmann; Jeremy Wazny

Herbrand constraint solving or unification has long been understood as an efficient mechanism for type checking and inference for programs using Hindley/Milner types. If we step back from the particular solving mechanisms used for Hindley/Milner types, and understand type operations in terms of constraints we not only give a basis for handling Hindley/Milner extensions, but also gain insight into type reasoning even on pure Hindley/Milner types, particularly for type errors. In this paper we consider typing problems as constraint problems and show which constraint algorithms are required to support various typing questions. We use a light weight constraint reasoning formalism, Constraint Handling Rules, to generate suitable algorithms for many popular extensions to Hindley/Milner types. The algorithms we discuss are all implemented as part of the freely available Chameleon system.

Palabras clave: Functional Dependency; Type Error; Typing Problem; Type Class; Type Processing.

- Invited Talk 1 | Pp. 1-25

Principal Type Inference for GHC-Style Multi-parameter Type Classes

Martin Sulzmann; Tom Schrijvers; Peter J. Stuckey

We observe that the combination of multi-parameter type classes with existential types and type annotations leads to a loss of principal types and undecidability of type inference. This may be a surprising fact for users of these popular features. We conduct a concise investigation of the problem and are able to give a type inference procedure which, if successful, computes principal types under the conditions imposed by the Glasgow Haskell Compiler (GHC). Our results provide new insights on how to perform type inference for advanced type extensions.

Palabras clave: Program Logic; Type Class; Type Inference; Principal Type; Type Annotation.

- Session 1 | Pp. 26-43

Private Row Types: Abstracting the Unnamed

Jacques Garrigue

In addition to traditional record and variant types, Objective Caml has structurally polymorphic types, for objects and polymorphic variants. These types allow new forms of polymorphic programming, but they have a limitation when used in combination with modules: there is no way to abstract their polymorphism in a signature. Private row types remedy this situation: they are manifest types whose “row-variable” is left abstract, so that an implementation may instantiate it freely. They have useful applications even in the absence of functors. Combined with recursive modules, they provide an original solution to the expression problem.

Palabras clave: Object Type; Polymorphic Variant; Functional Programming; Type Inference; Abstract Type.

- Session 1 | Pp. 44-60

Type and Effect System for Multi-staged Exceptions

Hyunjun Eo; Ik-Soon Kim; Kwangkeun Yi

We present a type and effect system for a multi-staged language with exceptions. The proposed type and effect system checks if we safely synthesize complex controls with exceptions in multi-staged programming. The proposed exception constructs in multi-staged programming has no artificial restriction. Exception-raise and -handle expressions can appear in expressions of any stage, though they are executed only at stage 0. Exceptions can be raised during code composition and may escape before they are handled. Our effect type system support such features. We prove our type and effect system sound: empty effect means the input program has no uncaught exceptions during its execution.

- Session 1 | Pp. 61-78

Relational Reasoning for Recursive Types and References

Nina Bohr; Lars Birkedal

We present a local relational reasoning method for reasoning about contextual equivalence of expressions in a λ -calculus with recursive types and general references. Our development builds on the work of Benton and Leperchey, who devised a nominal semantics and a local relational reasoning method for a language with simple types and simple references. Their method uses a parameterized logical relation. Here we extend their approach to recursive types and general references. For the extension, we build upon Pitts’ and Shinwell’s work on relational reasoning about recursive types (but no references) in nominal semantics. The extension is non-trivial because of general references (higher-order store) and makes use of some new ideas for proving the existence of the parameterized logical relation and for the choice of parameters.

Palabras clave: Local Parameter; Logical Relation; Relational Reasoning; Denotational Semantic; Store Type.

- Session 2 | Pp. 79-96

Proof Abstraction for Imperative Languages

William L. Harrison

Modularity in programming language semantics derives from abstracting over the structure of underlying denotations, yielding semantic descriptions that are more abstract and reusable. One such semantic framework is Liang’s modular monadic semantics in which the underlying semantic structure is encapsulated with a monad. Such abstraction can be at odds with program verification, however, because program specifications require access to the (deliberately) hidden semantic representation. The techniques for reasoning about modular monadic definitions of imperative programs introduced here overcome this barrier. And, just like program definitions in modular monadic semantics, our program specifications and proofs are representation-independent and hold for whole classes of monads, thereby yielding proofs of great generality.

Palabras clave: Monads; Monad Transformers; Language Semantics; Program Specification and Verification.

- Session 2 | Pp. 97-113

Reading, Writing and Relations

Nick Benton; Andrew Kennedy; Martin Hofmann; Lennart Beringer

We give an elementary semantics to an effect system, tracking read and write effects by using relations over a standard extensional semantics for the original language. The semantics establishes the soundness of both the analysis and its use in effect-based program transformations.

Palabras clave: Dead Computation; Denotational Semantic; Lambda Calculus; Imperative Program; Subtyping Relation.

- Session 2 | Pp. 114-130

A Fine-Grained Join Point Model for More Reusable Aspects

Hidehiko Masuhara; Yusuke Endoh; Akinori Yonezawa

We propose a new join point model for aspect-oriented programming (AOP) languages. In most AOP languages including AspectJ, a join point is a time interval of an action in execution. While those languages are widely accepted, they have problems in aspects reusability, and awkwardness when designing advanced features such as tracematches. Our proposed join point model, namely the point-in-time join point model redefines join points as the moments both at the beginning and end of actions. Those finer-grained join points enable us to design AOP languages with better reusability and flexibility of aspects. In this paper, we designed an AspectJ-like language based on the point-in-time model. We also give a denotational semantics of a simplified language in a continuation passing style, and demonstrate that we can straightforwardly model advanced language features such as exception handling and cflow pointcuts.

Palabras clave: Semantic Function; Base Language; Denotational Semantic; Advice Body; Hybrid Version.

- Session 3 | Pp. 131-147

Automatic Testing of Higher Order Functions

Pieter Koopman; Rinus Plasmeijer

This paper tackles a problem often overlooked in functional programming community: that of testing. Fully automatic test tools like Quickcheck and G ∀  ST can test first order functions successfully. Higher order functions, HOFs, are an essential and distinguishing part of functional languages. Testing HOFs automatically is still troublesome since it requires the generation of functions as test argument for the HOF to be tested. Also the functions that are the result of the higher order function needs to be identified. If a counter example is found, the generated and resulting functions should be printed, but that is impossible in most functional programming languages. Yet, bugs in HOFs do occur and are usually more subtle due to the high abstraction level. In this paper we present an effective and efficient technique to test higher order functions by using intermediate data types. Such a data type mimics and controls the structure of the function to be generated. A simple additional function transforms this data structure to the function needed. We use a continuation based parser library as main example of the tests. Our automatic testing method for HOFs reveals errors in the library that was used for a couple of years without problems.

Palabras clave: Data Type; Automatic Test; Functional Programming; Generate Test Case; High Order Function.

- Session 3 | Pp. 148-164

Event Driven Software Quality

Jens Palsberg

Event-driven programming has found pervasive acceptance, from high-performance servers to embedded systems, as an efficient method for interacting with a complex world. The fastest research Web servers are event-driven, as is the most common operating system for sensor nodes.

- Invited Talk 2 | Pp. 165-165