Learn More
Several recent studies have introduced lightweight ver sions of Java reduced languages in which complex fea tures like threads and re ection are dropped to enable rigorous arguments about key properties such as type safety We carry this process a step further omitting almost all features of the full language including inter faces and even assignment to(More)
This paper presents <italic>type classes</italic>, a new approach to <italic>ad-hoc</italic> polymorphism. Type classes permit overloading of arithmetic operators such as multiplication, and generalise the &#8220;eqtype variables&#8221; of Standard ML. Type classes extend the Hindley/Milner polymorphic type system, and provide a new approach to issues that(More)
This paper explores the use monads to structure functionalprograms. No prior knowledge of monads or category theory isrequired. Monads increase the ease with which programs may be modified.They can mimic the effect of impure features such as exceptions,state, and continuations; and also provide effects not easilyachieved with such features. The types of a(More)
We present GJ, a design that extends the Java programming language with generic types and methods. These are both explained and implemented by translation into the unextended language. The translation closely mimics the way generics are emulated by programmers: it erases all type parameters, maps type variables to their bounds, and inserts casts where(More)
"Some half dozen persons have written technically on combinatory logic, and most of these, including ourselves, have published something erroneous. Since some of our fellow sinners are among the most careful and competent logicians on the contemporary scene, we regard this as evidence that the subject is refractory. Thus fullness of exposition is necessory(More)
Category theorists invented <italic>monads</italic> in the 1960's to concisely express certain aspects of universal algebra. Functional programmers invented <italic>list comprehensions</italic> in the 1970's to concisely express certain programs involving lists. This paper shows how list comprehensions may be generalised to an arbitrary monad, and how the(More)
Links is a programming language for web applications that generates code for all three tiers of a web application from a single source, compiling into JavaScript to run on the client and into SQL to run on the database. Links supports rich clients running in what has been dubbed ‘Ajax’ style, and supports concurrent processes with statically-typed message(More)