Results 1  10
of
83
A System of Constructor Classes: Overloading and Implicit HigherOrder Polymorphism
 Journal of functional programming
, 1995
"... This paper describes a flexible type system which combines overloading and higherorder polymorphism in an implicitly typed language using a system of constructor classes  a natural generalization of type classes in Haskell. We present a wide range of examples which demonstrate the usefulness of ..."
Abstract

Cited by 195 (14 self)
 Add to MetaCart
(Show Context)
This paper describes a flexible type system which combines overloading and higherorder polymorphism in an implicitly typed language using a system of constructor classes  a natural generalization of type classes in Haskell. We present a wide range of examples which demonstrate the usefulness of such a system. In particular, we show how constructor classes can be used to support the use of monads in a functional language. The underlying type system permits higherorder polymorphism but retains many of many of the attractive features that have made the use of Hindley/Milner type systems so popular. In particular, there is an effective algorithm which can be used to calculate principal types without the need for explicit type or kind annotations. A prototype implementation has been developed providing, amongst other things, the first concrete implementation of monad comprehensions known to us at the time of writing. 1 An overloaded map function Many functional programs use the map ...
Dialogue Pragmatics and Context Specification
 In Abduction, Belief and Context in Dialogue; studies in computational
, 2000
"... Introduction Pragmatics is commo,nly understood to be concerned with studying the relations between linguistic phenomena and properties of the context of use. The understanding of these relations is important in many areas of theoretical and applied research, from grammatical analysis to sociolingu ..."
Abstract

Cited by 58 (18 self)
 Add to MetaCart
Introduction Pragmatics is commo,nly understood to be concerned with studying the relations between linguistic phenomena and properties of the context of use. The understanding of these relations is important in many areas of theoretical and applied research, from grammatical analysis to sociolinguistic field studies. One area where the importance of these relations has become particularly clear is the design of language understanding systems. Such systems are extremely limited, brittle, and unpractical if they do not have powerful ways to make use of contextual information in computing the meanings of utterances. The question of how this can be achieved in an effective and principled way forms one of the major obstacles in building such systems. Computational pragmatics, the study of how contextual information can be effectively brought to bear in language understanding and production processes, hopes to contribute to removing this obstacle. One way in which contextual infor
Sage: Hybrid checking for flexible specifications
 In Scheme and Functional Programming Workshop
, 2006
"... ..."
(Show Context)
Dynamic Typing as Staged Type Inference
 In Symposium on Principles of Programming Languages
, 1998
"... Dynamic typing extends statically typed languages with a universal datatype, simplifying programs whichmust manipulate other programs as data, such as distributed, persistent, interpretive and generic programs. Current approaches, however, limit the use of polymorphism in dynamic values, and can ..."
Abstract

Cited by 41 (3 self)
 Add to MetaCart
Dynamic typing extends statically typed languages with a universal datatype, simplifying programs whichmust manipulate other programs as data, such as distributed, persistent, interpretive and generic programs. Current approaches, however, limit the use of polymorphism in dynamic values, and can be syntactically awkward. We introduce a new approach to dynamic typing, based on staged computation, which allows a single typereconstruction algorithm to execute partly at compile time and partly at runtime. This approach seamlessly extends a single type system to accommodate types that are only known at runtime,while still supporting both type inference and polymorphism. The system is signi#cantly more expressive than other approaches. Furthermore it can be implemented e#ciently; most of the type inference is done at compiletime,leaving only some residual uni#cation for runtime. We demonstrate our approachby examples in a small polymorphic functional language,and present its type sy...
ObjectOriented Programming Without Recursive Types
 In Proc 20th ACM Symp. Principles of Programming Languages
"... It is widely agreed that recursive types are inherent in the static typing of the essential mechanisms of objectoriented programming: encapsulation, message passing, subtyping, and inheritance. We demonstrate here that modeling object encapsulation in terms of existential types yields a substantiall ..."
Abstract

Cited by 38 (1 self)
 Add to MetaCart
It is widely agreed that recursive types are inherent in the static typing of the essential mechanisms of objectoriented programming: encapsulation, message passing, subtyping, and inheritance. We demonstrate here that modeling object encapsulation in terms of existential types yields a substantially more straightforward explanation of these features in a simpler calculus without recursive types. 1 Introduction Static type systems for objectoriented programming languages have progressed significantly in the past decade. The line of research begun by Cardelli [11] and continued by Cardelli [18, 17, 14, 13], Mitchell [32, 10, 33], Bruce [8, 5, 7], and others [31, 39, 21, 10, 23, 20, 19, 26, 29, 44, 45, 46] has culminated in typetheoretic accounts [6, 14] of many of the features of languages like Smalltalk [28]. Our goal here is to reformulate the essential mechanisms of these accounts using a simpler type theory: we give a complete model of encapsulation, message passing, subtyping, ...
The Calculus of Algebraic Constructions
 In Proc. of the 10th Int. Conf. on Rewriting Techniques and Applications, LNCS 1631
, 1999
"... Abstract. In a previous work, we proved that an important part of the Calculus of Inductive Constructions (CIC), the basis of the Coq proof assistant, can be seen as a Calculus of Algebraic Constructions (CAC), an extension of the Calculus of Constructions with functions and predicates defined by hi ..."
Abstract

Cited by 33 (11 self)
 Add to MetaCart
Abstract. In a previous work, we proved that an important part of the Calculus of Inductive Constructions (CIC), the basis of the Coq proof assistant, can be seen as a Calculus of Algebraic Constructions (CAC), an extension of the Calculus of Constructions with functions and predicates defined by higherorder rewrite rules. In this paper, we prove that almost all CIC can be seen as a CAC, and that it can be further extended with nonstrictly positive types and inductiverecursive types together with nonfree constructors and patternmatching on defined symbols. 1.
Abstract Interpretation of Functional Languages: From Theory to Practice
, 1991
"... Abstract interpretation is the name applied to a number of techniques for reasoning about programs by evaluating them over nonstandard domains whose elements denote properties over the standard domains. This thesis is concerned with higherorder functional languages and abstract interpretations with ..."
Abstract

Cited by 27 (0 self)
 Add to MetaCart
(Show Context)
Abstract interpretation is the name applied to a number of techniques for reasoning about programs by evaluating them over nonstandard domains whose elements denote properties over the standard domains. This thesis is concerned with higherorder functional languages and abstract interpretations with a formal semantic basis. It is known how abstract interpretation for the simply typed lambda calculus can be formalised by using binary logical relations. This has the advantage of making correctness and other semantic concerns straightforward to reason about. Its main disadvantage is that it enforces the identification of properties as sets. This thesis shows how the known formalism can be generalised by the use of ternary logical relations, and in particular how this allows abstract values to deno...
The Implicit Calculus of Constructions  Extending Pure Type Systems with an Intersection Type Binder and Subtyping
 Proc. of 5th Int. Conf. on Typed Lambda Calculi and Applications, TLCA'01, Krakow
, 2001
"... In this paper, we introduce a new type system, the Implicit Calculus of Constructions, which is a Currystyle variant of the Calculus of Constructions that we extend by adding an intersection type binder called the implicit dependent product. Unlike the usual approach of Type Assignment Systems ..."
Abstract

Cited by 17 (0 self)
 Add to MetaCart
(Show Context)
In this paper, we introduce a new type system, the Implicit Calculus of Constructions, which is a Currystyle variant of the Calculus of Constructions that we extend by adding an intersection type binder called the implicit dependent product. Unlike the usual approach of Type Assignment Systems, the implicit product can be used at every place in the universe hierarchy. We study syntactical properties of this calculus such as the subject reduction property, and we show that the implicit product induces a rich subtyping relation over the type system in a natural way. We also illustrate the specicities of this calculus by revisitting the impredicative encodings of the Calculus of Constructions, and we show that their translation into the implicit calculus helps to reect the computational meaning of the underlying terms in a more accurate way.
Modified Realizability Toposes and Strong Normalization Proofs (Extended Abstract)
 Typed Lambda Calculi and Applications, LNCS 664
, 1993
"... ) 1 J. M. E. Hyland 2 C.H. L. Ong 3 University of Cambridge, England Abstract This paper is motivated by the discovery that an appropriate quotient SN 3 of the strongly normalising untyped 3terms (where 3 is just a formal constant) forms a partial applicative structure with the inherent appl ..."
Abstract

Cited by 16 (1 self)
 Add to MetaCart
) 1 J. M. E. Hyland 2 C.H. L. Ong 3 University of Cambridge, England Abstract This paper is motivated by the discovery that an appropriate quotient SN 3 of the strongly normalising untyped 3terms (where 3 is just a formal constant) forms a partial applicative structure with the inherent application operation. The quotient structure satisfies all but one of the axioms of a partial combinatory algebra (pca). We call such partial applicative structures conditionally partial combinatory algebras (cpca). Remarkably, an arbitrary rightabsorptive cpca gives rise to a tripos provided the underlying intuitionistic predicate logic is given an interpretation in the style of Kreisel's modified realizability, as opposed to the standard Kleenestyle realizability. Starting from an arbitrary rightabsorptive cpca U , the tripostotopos construction due to Hyland et al. can then be carried out to build a modified realizability topos TOPm (U ) of nonstandard sets equipped with an equali...
Logical reasoning for higherorder functions with local state
 In Foundations of Software Science and Computation Structure
"... ABSTRACT. We introduce an extension of Hoare logic for callbyvalue higherorder functions with MLlike local reference generation. Local references may be generated dynamically and exported outside their scope, may store higherorder functions and may be used to construct complex mutable data stru ..."
Abstract

Cited by 15 (6 self)
 Add to MetaCart
(Show Context)
ABSTRACT. We introduce an extension of Hoare logic for callbyvalue higherorder functions with MLlike local reference generation. Local references may be generated dynamically and exported outside their scope, may store higherorder functions and may be used to construct complex mutable data structures. This primitive is captured logically using a predicate asserting reachability of a reference name from a possibly higherorder datum and quantifiers over hidden references. We explore the logic’s descriptive and reasoning power with nontrivial programming examples combining higherorder procedures and dynamically generated local state. Axioms for reachability and local invariant play a central role for reasoning about the examples.