Learn More
Type abstraction and intensional type analysis are features seemingly at odds-type abstraction is intended to guarantee parametricity and representation independence, while type analysis is inherently non-parametric. Recently, however, several researchers have proposed and implemented "dynamic type generation" as a way to reconcile these features. The idea(More)
The standard formalism for explaining abstract types is existential quantification. While it provides a sufficient model for type abstraction in entirely statically typed languages, it proves to be too weak for languages enriched with forms of dynamic typing, where parametricity is violated. As an alternative approach to type abstraction that addresses this(More)
This paper introduces a type system for Extensible Dependency Grammar (xdg) (Debusmann et al., 2004), a new, modular grammar formalism based on dependency grammar. As xdg is based on graph description, our emphasis is on capturing the notion of multigraph, a tuple of arbitrary many graphs sharing the same set of nodes. An xdg grammar consists of the(More)
The method of logical relations is a classic technique for proving the equivalence of higher-order programs that implement the same observable behavior but employ different internal data representations. Although it was originally studied for pure, strongly normalizing languages like System F, it has been extended over the past two decades to reason about(More)
ML modules are a powerful language mechanism for decomposing programs into reusable components. Unfortunately, they also have a reputation for being "complex" and requiring fancy type theory that is mostly opaque to non-experts. While this reputation is certainly understandable, given the many non-standard methodologies that have been developed in the(More)
We present Alice, a functional programming language that has been designed with strong support for typed open programming. It incorporates concur-rency with data flow synchronisation, higher-order modularity, dynamic modules, and type-safe pickling as a minimal and generic set of simple, orthogonal features providing that support. Based on these mechanisms(More)
We present Alice, a functional programming language that has been designed with strong support for typed open programming. It incorporates concurrency with data flow synchro-nisation, higher-order modularity, dynamic modules, and type-safe pickling as a minimal and generic set of simple, orthogonal features providing that support. Based on these mechanisms(More)