43107545
A Theory of Qualified Types
Abstract This paper describes a general theory of overloading based on a system of qualified types. The central idea is the use of predicates in the type of a term, restricting the scope of universal quantification. A corresponding semantic notion of evidence is introduced and provides a uniform framework for implementing applications of this system, including Haskell style type classes, extensible records and subtyping. Working with qualified types in a simple, implicitly typed, functional language, we extend the Damas-Milner approach to type inference. As a result, we show that the set of all possible typings for a given term can be characterized by a principal type scheme, calculated by a type inference algorithm.
12891588
Implementing type classes
We describe the implementation of a type checker for the functional programming language Haskell that supports the use of type classes. This extends the type system of ML to support overloading (ad-hoc polymorphism) and can be used to implement features such as equality types and numeric overloading in a simple and general way.
The theory of type classes is well understood, but the practical issues involved in the implementation of such systems have not received a great deal of attention. In addition to the basic type checking algorithm, an implmenentation of type classes also requires some form of program transformation. In all current Haskell compilers this takes the form of dictionary conversion, using functions as hidden parameters to overloaded values. We present efficient techniques for type checking and dictionary conversion. A number of optimizations and extensions to the basic type class sytems are also described.
6608650
Dictionary-free overloading by partial evaluation
One of the most novel features in the functional programming language Haskell is the system oftype classes used to support a combination of overloading and polymorphism. Current implementations of type class overloading are based on the use ofdictionary values, passed as extra parameters to overloaded functions. Unfortunately, this can have a significant effect on run-time performance, for example, by reducing the effectiveness of important program analyses and optimizations.This paper describes how a simple partial evaluator can be used to avoid the need for dictionary values at run-time by generating specialized versions of overloaded functions. This eliminates the run-time costs of overloading. Furthermore, and somewhat surprisingly given the presence of multiple versions of some functions, for all of the examples that we have tried so far, specialization actually leads to a reduction in the size of compiled programs.
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.
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.
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.
14178775
A Parallel Algorithm for Mesh Smoothing
Maintaining good mesh quality during the generation and refinement of unstructured meshes in finite-element applications is an important aspect in obtaining accurate discretizations and well-conditioned linear systems. In this article, we present a mesh-smoothing algorithm based on nonsmooth optimization techniques and a scalable implementation of this algorithm. We prove that the parallel algorithm has a provably fast runtime bound and executes correctly for a parallel random access machine (PRAM) computational model. We extend the PRAM algorithm to distributed memory computers and report results for two- and three-dimensional simplicial meshes that demonstrate the efficiency and scalability of this approach for a number of different test cases. We also examine the effect of different architectures on the parallel algorithm and present results for the IBM SP supercomputer and an ATM-connected network of SPARC Ultras.
42586645
The music is the message
the music being played by her tiny mobile audio appliance. She's standing waiting for a train. Other commuters swarm nearby, headphones on, listening in more muted ways to the soundtracks they've chosen to accompany today's episode of their daily routine. Mobile music players—iPods, Walkmans and the like—are exciting for those of us involved in thinking about the future of mobile devices and services. Like the mobile phone—increasing numbers of which also sport a music player—these are gadgets that people actually desire, and aspire to own. They have vast storage capacities, increasingly sophisticated processors and pleasing, effective mechanisms for users to control their func-tionality. From click and jog wheels to high-resolution color displays, these players are far from being the impoverished devices that typified mobile platforms just a few years ago. And there are hundreds of millions of them in circulation—Apple sold five million in the first quarter of 2006 alone. But at the same time, these marvelous mobiles could be seen as an obstacle to the bright futures dreamt up in the research labs. How will people be able to make use of the ubiquitous computing infrastructure being envisaged, the anytime, everywhere access to information and services, when they are immersed in digital sound bubbles of their own choosing? Some mobile listeners, at first sight, certainly appear cut off. Another scene: A young man stares out of a train window, watching the long green fields flash by. His eyes are bright but still; his gaze betrays a mood of deep reflection. Listening to music on expensive , noise-reducing headphones, what is he thinking? Is he sadly contemplating a lover left or anticipating a longed-for meeting at his destination? How can we design mobile services that will fit this context? The conventional clumsy beeps, vibrations, and attention-seeking displays seem out of place. What opportunities are there to build more emphatic systems , systems to enhance the music and environmental experience or to provide ways for the listener to later reflect on the situations they've lived through in relation to the music they've heard? At other times, though, these sound bubbles seem more permeable, don't they? One of the photos of people listening to music available on a popular image-sharing site is entitled " Listening to Kim's iPod and talking to Joe! " A teenager holds a mobile phone to her left ear while wearing the distinctive white music-player headphones. Chatting and …
3268647
A digital library of conversational expressions: helping profoundly disabled users communicate
Digital libraries are for everyone. This paper describes the development of a digital library for a user who has a profound physical disability that means she cannot communicate verbally, and cannot use conventional communication tools.
6148133
Wild Things
The children's book Where the Wild Things Are by Maurice Sendak was animated using Alice version 2.0 for an introductory undergraduate 14-week programming course at Immaculata University. Using the software development lifecycle, the designers/developers collaborated on the requirements and design phases while the implementation phase was completed individually. The animation was designed and developed with the intent of applying objectoriented principles and reusing objects where appropriate.
 Three individual scenes were created using Alice version 2.0. Upon the completion of the scenes, a screen capture tool (Hypercam2), and an audio capture tool (River Past) were used to break down the animation. Those components were synchronized using Windows Movie Maker and then the animation was converted to a Flash file.
 • Scene 1 - Tommy's Bedroom: Tommy is sent to his room and his imagination creates a jungle that grows around him.
 • Scene 2 - Sailing the Ocean: Tommy imagines sailing across the sea towards an island and encounters wild things along the way.
 • Scene 3 - An Island Encounter: Tommy reaches the island and meets the wild things only to awaken back in his bedroom as his mother calls him for dinner.
39410616
Theme issue on interactive mobile information access
This paper introduces this issue on interactive mobile information access. Papers are presented issues relating to a diversity of user groups and environments, with a central theme of accessing information whilst on the move.