14189118
A Theory of Qualified Types
• The ability to include local constraints as part of the type of an object. This enables the definition and use of polymorphic overloaded values within a program. ∗An earlier version of this paper was presented at the European Symposium on Programming, Rennes, France, February 1992 and appears in the conference proceedings published in Springer Verlag LNCS Volume 582. †Address from September 1992: Yale University, Department of Computer Science, P.O. Box 2158 Yale Station, New Haven, Connecticut 06520-2158, USA.
14632058
First-class polymorphism with type inference
Languages like ML and Haskell encourage the view of values as first-class entities that can be passed as arguments or results of functions, or stored as components of data structures. The same languages offer parametric polymorphism, which allows the use of values that behave uniformly over a range of different types. But the combination of these features is not supported-- polymorphic values are not first-class. This restriction is sometimes attributed to the dependence of such languages on type inference, in contrast to more expressive, explicitly typed languages, like System F, that do support first-class polymorphism.This paper uses relationships between types and logic to develop a type system, FCP, that supports first-class polymorphism, type inference, and also first-class abstract datatypes. The immediate result is a more expressive language, but there are also long term implications for language design.
1424753
Monad transformers and modular interpreters
We show how a set of building blocks can be used to construct programming language interpreters, and present implementations of such building blocks capable of supporting many commonly known features, including simple expressions, three different function call mechanisms (call-by-name, call-by-value and lazy evaluation), references and assignment, nondeterminism, first-class continuations, and program tracing.
The underlying mechanism of our system is monad transformers, a simple form of abstraction for introducing a wide range of computational behaviors, such as state, I/O, continuations, and exceptions.
Our work is significant in the following respects. First, we have succeeded in designing a fully modular interpreter based on monad transformers that incudes features missing from Steele's, Espinosa's, and Wadler's earlier efforts. Second, we have found new ways to lift monad operations through monad transformers, in particular difficult cases not achieved in Moggi's original work. Third, we have demonstrated that interactions between features are reflected in liftings and that semantics can be changed by reordering monad transformers. Finally, we have implemented our interpreter in Gofer, whose constructor classes provide just the added power over Haskell's type classes to allow precise and convenient expression of our ideas. This implementation includes a method for constructing extensible unions and a form of subtyping that is interesting in its own right.
2346657
ML Typing, Explicit Polymorphism and Qualified Types
The ML type system was originally introduced as a means of identifying a class of terms in a simple untyped language, often referred to as core-ML, whose evaluation could be guaranteed not to “go wrong”. In subsequent work, the terms of core-ML have also been viewed as a ‘convenient shorthand’ for programs in typed languages. Notable examples include studies of ML polymorphism and investigations of overloading, motivated by the use of type classes in Haskell.
9087296
Using Types to Parse Natural Language
We describe a natural language parser that uses type information to determine the grammatical structure of simple sentences and phrases. This stands in contrast to studies of type inference where types and grammatical structure play opposite roles, the former being determined by the latter. Our parser is implemented in Haskell and is based on a linguistic theory called applicative universal grammar (AUG). Our results should be interesting to computer scientists in the way in which AUG relates to types and combinatory calculus, and to linguists in the way in which a very simple, brute force parsing strategy performs surprisingly well in both performance and accuracy.
15051631
Type Classes with Functional Dependencies
Type classes in Haskell allow programmers to define functions that can be used on a set of different types, with a potentially different implementation in each case. For example, type classes are used to support equality and numeric types, and for monadic programming. A commonly requested extension to support 'multiple parameters' allows a more general interpretation of classes as relations on types, and has many potentially useful applications. Unfortunately, many of these examples do not work well in practice, leading to ambiguities and inaccuracies in inferred types and delaying the detection of type errors. 
 
This paper illustrates the kind of problems that can occur with multiple parameter type classes, and explains how they can be resolved by allowing programmers to specify explicit dependencies between the parameters. A particular novelty of this paper is the application of ideas from the theory of relational databases to the design of type systems.
40903922
CPJazz-a software framework for vehicle systems integration and wireless connectivity
Integration of new technology into vehicles continues at a rapid pace. New technology includes not only deeply embedded devices for vehicle systems management but also operator interfaces, such as navigation systems, voice-recognition/text-to-speech interfaces and integration of consumer electronic appliances such as the personal digital assistant (PDA). Standardization efforts have attempted to bring these technologies together through common buses, but because these devices have different capabilities and requirements of their own, this is most likely impossible. The CPJazz framework was designed to provide integration of disparate devices and protocols through a dynamic and scalable component-based architecture. In this paper, the capabilities and services provided by CPJazz for vehicle-based software integrators are discussed, as well as the identification of key scenarios that demonstrate its contributions to the vehicle and wireless environment.
17471768
Navigation via continuously adapted music
Listening to music on personal, digital devices while mobile is an enjoyable, everyday activity. We explore a scheme for exploiting this practice to immerse listeners in navigation cues. Our prototype, Ontrack, continuously adapts audio, modifying the spatial balance and volume to lead listeners to their target destination. An initial lab-based evaluation has demonstrated the approach's efficacy: users were able to complete tasks within a reasonable time and their subjective feedback was positive. Encouraged by these findings, we are building a pocket-sized prototype for further testing.
18996618
The Production of Volume Data from Triangular Meshes Using Voxelisation
Voxelisation is the term given to the process of converting data from one source type into a three dimensional volume of data values. The techniques known collectively as volume visualisation can then be applied to the data in order to produce a graphical representation of the object. This paper gives a practical approach to the voxelisation of data in the form of triangular meshes, and demonstrates the use of the method on various datasets. Visualisation is achieved by a method also described in the paper.
15786317
Bringing the C Libraries With Us into a Multi-Threaded Future
Textile materials such as fiber and cloth can be dyed more satisfactorily with sulfur dyes or sulfurized vat dyes by allowing an organic mercapto compound and/or an organic sulfur compound capable of generating mercapto groups under dyeing conditions to be present in dye baths. Still more improved dyeing results may be obtained by allowing a sulfite salt compound to be further present in such dye baths.
13294915
Voxelisation: Modelling for Volume Graphics
Voxelisation is the term given to the process of converting data from one source type into a three dimensional volume of data values. The techniques known collectively as volume visualisation can then be applied to the data in order to produce a graphical representation of the object. This paper gives a new practical approach to the voxelisation of data which fills the entire volume. Its use is demonstrated on various datasets such as triangular mesh objects, CT data, and objects defined by trivariate functions.