Results 1  10
of
68
Guarded Recursive Datatype Constructors
, 2003
"... introduc e a notion of guarded rec ursive (g.r.) datatype c#w struc tors, generalizing the notion ofrec# rsive datatypes in func tional programming languages suc h as ML and Haskell. We address both theoret ic#t and prac# ic## issues resulted from this generalization. On one hand, we design a type s ..."
Abstract

Cited by 146 (10 self)
 Add to MetaCart
(Show Context)
introduc e a notion of guarded rec ursive (g.r.) datatype c#w struc tors, generalizing the notion ofrec# rsive datatypes in func tional programming languages suc h as ML and Haskell. We address both theoret ic#t and prac# ic## issues resulted from this generalization. On one hand, we design a type system to formalize the notion of g.r. datatypec onstruc  tors and then prove the soundness of the type system. On the other hand, we present some signific ant applic ations (e.g., implementing objec ts, implementing stagedc omputation, etc# ) of g.r. datatype c# nstruc#S rs, arguing that g.r. datatypec onstruc torsc an have farreac hingc onsequenc es in programming. The mainc ontribution of the paper lies in the rec#I0 ition and then the formalization of a programming notion that is of both theoretic# l interest and prac tic# l use.
System F with type equality coercions
, 2007
"... We introduce System FC, which extends System F with support for nonsyntactic type equality. There are two main extensions: (i) explicit witnesses for type equalities, and (ii) open, nonparametric type functions, given meaning by toplevel equality axioms. Unlike System F, FC is expressive enough to ..."
Abstract

Cited by 109 (27 self)
 Add to MetaCart
(Show Context)
We introduce System FC, which extends System F with support for nonsyntactic type equality. There are two main extensions: (i) explicit witnesses for type equalities, and (ii) open, nonparametric type functions, given meaning by toplevel equality axioms. Unlike System F, FC is expressive enough to serve as a target for several different sourcelanguage features, including Haskell’s newtype, generalised algebraic data types, associated types, functional dependencies, and perhaps more besides.
Putting Type Annotations to Work
, 1996
"... We study an extension of the HindleyMilner system with explicit type scheme annotations and type declarations. The system can express polymorphic function arguments, userdefined data types with abstract components, and structure types with polymorphic fields. More generally, all programs of the po ..."
Abstract

Cited by 101 (1 self)
 Add to MetaCart
(Show Context)
We study an extension of the HindleyMilner system with explicit type scheme annotations and type declarations. The system can express polymorphic function arguments, userdefined data types with abstract components, and structure types with polymorphic fields. More generally, all programs of the polymorphic lambda calculus can be encoded by a translation between typing derivations. We show that type reconstruction in this system can be reduced to the decidable problem of firstorder unification under a mixed prefix.
Firstclass Polymorphism with Type Inference
"... Languages like ML and Haskell encourage the view of values as firstclass entities that can be passed as arguments or results of functions, or stored as components of data structures. The same languages o#er parametric polymorphism, which allows the use of values that behave uniformly over a range ..."
Abstract

Cited by 53 (0 self)
 Add to MetaCart
(Show Context)
Languages like ML and Haskell encourage the view of values as firstclass entities that can be passed as arguments or results of functions, or stored as components of data structures. The same languages o#er parametric polymorphism, which allows the use of values that behave uniformly over a range of di#erent types. But the combination of these features is not supported polymorphic values are not firstclass. 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 firstclass polymorphism. This paper uses relationships between types and logic to develop a type system, FCP, that supports firstclass polymorphism, type inference, and also firstclass abstract datatypes. The immediate result is a more expressive language, but there are also long term implications for language design. 1
A constraintbased approach to guarded algebraic data types
 ACM Trans. Prog. Languages Systems
, 2007
"... We study HMG(X), an extension of the constraintbased type system HM(X) with deep pattern matching, polymorphic recursion, and guarded algebraic data types. Guarded algebraic data types subsume the concepts known in the literature as indexed types, guarded recursive datatype constructors, (firstcla ..."
Abstract

Cited by 27 (0 self)
 Add to MetaCart
(Show Context)
We study HMG(X), an extension of the constraintbased type system HM(X) with deep pattern matching, polymorphic recursion, and guarded algebraic data types. Guarded algebraic data types subsume the concepts known in the literature as indexed types, guarded recursive datatype constructors, (firstclass) phantom types, and equality qualified types, and are closely related to inductive types. Their characteristic property is to allow every branch of a case construct to be typechecked under different assumptions about the type variables in scope. We prove that HMG(X) is sound and that, provided recursive definitions carry a type annotation, type inference can be reduced to constraint solving. Constraint solving is decidable, at least for some instances of X, but prohibitively expensive. Effective type inference for guarded algebraic data types is left as an issue for future research.
ConstraintBased Type Inference for Guarded Algebraic Data Types
, 2003
"... Guarded algebraic data types, which subsume the concepts known in the literature as indexed types, guarded recursive datatype constructors, and phantom types, and are closely related to inductive types, have the distinguishing feature that, when typechecking a function defined by cases, every branch ..."
Abstract

Cited by 24 (3 self)
 Add to MetaCart
(Show Context)
Guarded algebraic data types, which subsume the concepts known in the literature as indexed types, guarded recursive datatype constructors, and phantom types, and are closely related to inductive types, have the distinguishing feature that, when typechecking a function defined by cases, every branch must be checked under di#erent typing assumptions. This mechanism allows exploiting the presence of dynamic tests in the code to produce extra static type information.
A framework for extended algebraic data types
 In Proc. of FLOPS’06, volume 3945 of LNCS
, 2006
"... Abstract. There are a number of extended forms of algebraic data types such as type classes with existential types and generalized algebraic data types. Such extensions are highly useful but their interaction has not been studied formally so far. Here, we present a unifying framework for these exten ..."
Abstract

Cited by 23 (10 self)
 Add to MetaCart
(Show Context)
Abstract. There are a number of extended forms of algebraic data types such as type classes with existential types and generalized algebraic data types. Such extensions are highly useful but their interaction has not been studied formally so far. Here, we present a unifying framework for these extensions. We show that the combination of type classes and generalized algebraic data types allows us to express a number of interesting properties which are desired by programmers. We support type checking based on a novel constraint solver. Our results show that our system is practical and greatly extends the expressive power of languages such as Haskell and ML. 1
Extending ML with semiexplicit higherorder polymorphism
 Information and Computation
, 1999
"... Abstract. We propose a modest conservative extension to ML that allows semiexplicit higherorder polymorphism while preserving the essential properties of ML. In our proposal, the introduction of polymorphic types remains fully explicit, that is, both the introduction and the exact polymorphic ty ..."
Abstract

Cited by 21 (8 self)
 Add to MetaCart
(Show Context)
Abstract. We propose a modest conservative extension to ML that allows semiexplicit higherorder polymorphism while preserving the essential properties of ML. In our proposal, the introduction of polymorphic types remains fully explicit, that is, both the introduction and the exact polymorphic type must be specied. However, the elimination of polymorphic types is now semiimplicit: only the elimination itself must be speci ed as the polymorphic type is inferred. This extension is particularly useful in Objective ML where polymorphism replaces subtyping.
SemiExplicit FirstClass Polymorphism for ML
 Information and Computation
, 1999
"... We propose a modest conservative extension to ML that allows semiexplicit firstclass polymorphism while preserving the essential properties of type inference. In our proposal, the introduction of polymorphic types is fully explicit, that is, both introduction points and exact polymorphic types ..."
Abstract

Cited by 21 (1 self)
 Add to MetaCart
We propose a modest conservative extension to ML that allows semiexplicit firstclass polymorphism while preserving the essential properties of type inference. In our proposal, the introduction of polymorphic types is fully explicit, that is, both introduction points and exact polymorphic types are to be specified. However, the elimination of polymorphic types is semiimplicit: only elimination points are to be specified as polymorphic types themselves are inferred. This extension is particularly useful in Objective ML where polymorphism replaces subtyping. Introduction The success of the ML language is due to its combination of several attractive features. Undoubtedly, the polymorphism of ML [Damas and Milner, 1982] or polymorphism `a la ML with the type inference it allows, is a major advantage. The ML type system stays in close correspondence with the rules of logic, following the CurryHoward isomorphism between types and formulas, which provides a simple intuition, ...
Programming With Broadcasts
 In CONCUR
, 1993
"... . [Pra91, Pra92] develop CBS, a CCSlike calculus [Mil89] where processes communicate by broadcasting values along a single channel. These values are hidden or restricted by translation to noise. This paper types CBS and restricts it to processes with a unique response to each input. Nondeterminism ..."
Abstract

Cited by 20 (7 self)
 Add to MetaCart
. [Pra91, Pra92] develop CBS, a CCSlike calculus [Mil89] where processes communicate by broadcasting values along a single channel. These values are hidden or restricted by translation to noise. This paper types CBS and restricts it to processes with a unique response to each input. Nondeterminism arises only if two processes in parallel both wish to transmit. These restrictions do not reduce the programming power of CBS. But strong and weak bisimulation can now be defined exactly as in CCS, yet capture observationally meaningful relations. Weak bisimulation is a congruence. This paper also shows how to program in CBS in a (lazy) ML framework. A simple CBS simulator is given, and a parallel implementation discussed. The simulator represents data evaluation, recursion and conditionals directly in Lazy ML. It implements an extended CBS with evaluation as well as communication transitions. [Pra91, Pra92] develop a CCSlike [Mil89] calculus of broadcasting systems, CBS. This paper continu...