Catálogo de publicaciones - libros
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
2006
Información sobre derechos de publicación
© Springer-Verlag Berlin Heidelberg 2006
Cobertura temática
Tabla de contenidos
doi: 10.1007/11924661_1
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
doi: 10.1007/11924661_2
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
doi: 10.1007/11924661_3
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
doi: 10.1007/11924661_4
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
doi: 10.1007/11924661_5
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
doi: 10.1007/11924661_6
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
doi: 10.1007/11924661_7
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
doi: 10.1007/11924661_8
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
doi: 10.1007/11924661_9
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
doi: 10.1007/11924661_10
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