Results 1  10
of
94
Languages of the Future
 In OOPSLA ’04: Companion to the 19th annual ACM SIGPLAN conference on Objectoriented programming systems, languages, and applications
, 2004
"... This paper explores a new point in the design space of formal reasoning systems  part programming language, part logical framework. The system is built on a programming language where the user expresses equality constraints between types and the type checker then enforces these constraints. This si ..."
Abstract

Cited by 70 (3 self)
 Add to MetaCart
This paper explores a new point in the design space of formal reasoning systems  part programming language, part logical framework. The system is built on a programming language where the user expresses equality constraints between types and the type checker then enforces these constraints. This simple extension to the type system allows the programmer to describe properties of his program in the types of witness objects which can be thought of as concrete evidence that the program has the property desired. These techniques and two other rich typing mechanisms, rankN polymorphism and extensible kinds, create a powerful new programming idiom for writing programs whose types enforce semantic properties. A language with these features is both a practical programming language and a logic. This marriage between two previously separate entities increases the probability that users will apply formal methods to their programming designs. This kind of synthesis creates the foundations for the languages of the future.
PolyAML: A polymorphic aspectoriented functional programming language (Extended Version)
, 2005
"... ..."
Qualified types for MLF
 In The International Conference on Functional Programming (ICFP’05
, 2005
"... MLF is a type system that extends a functional language with impredicative rankn polymorphism. Type inference remains possible and only in some clearly defined situations, a local type annotation is required. Qualified types are a general concept that can accommodate a wide range of type systems ex ..."
Abstract

Cited by 23 (2 self)
 Add to MetaCart
MLF is a type system that extends a functional language with impredicative rankn polymorphism. Type inference remains possible and only in some clearly defined situations, a local type annotation is required. Qualified types are a general concept that can accommodate a wide range of type systems extension, for example, type classes in Haskell. We show how the theory of qualified types can be used seamlessly with the higherranked impredicative polymorphism of MLF, and give a solution to the nontrivial problem of evidence translation in the presence of impredicative datatypes. 1.
Complete and decidable type inference for GADTs
 In Proceedings of the 14th ACM SIGPLAN international conference on Functional programming, ICFP ’09
, 2009
"... GADTs have proven to be an invaluable language extension, for ensuring data invariants and program correctness among others. Unfortunately, they pose a tough problem for type inference: we lose the principaltype property, which is necessary for modular type inference. We present a novel and simplif ..."
Abstract

Cited by 18 (4 self)
 Add to MetaCart
GADTs have proven to be an invaluable language extension, for ensuring data invariants and program correctness among others. Unfortunately, they pose a tough problem for type inference: we lose the principaltype property, which is necessary for modular type inference. We present a novel and simplified type inference approach for local type assumptions from GADT pattern matches. Our approach is complete and decidable, while more liberal than previous such approaches.
HMF: Simple type inference for firstclass polymorphism
, 2008
"... HMF is a conservative extension of HindleyMilner type inference with firstclass polymorphism. In contrast to other proposals, HML uses regular System F types and has a simple type inference algorithm that is just a small extension of the usual DamasMilner algorithm W. Given the relative simplicit ..."
Abstract

Cited by 14 (0 self)
 Add to MetaCart
HMF is a conservative extension of HindleyMilner type inference with firstclass polymorphism. In contrast to other proposals, HML uses regular System F types and has a simple type inference algorithm that is just a small extension of the usual DamasMilner algorithm W. Given the relative simplicity and expressive power, we feel that HMF can be an attractive type system in practice. There is a reference implementation of the type system available online together with
EffectiveAdvice: Disciplined Advice with Explicit Effects
"... Advice is a mechanism, widely used in aspectoriented languages, that allows one program component to augment or modify the behavior of other components. When advice and other components are composed together they become tightly coupled, sharing both control and data flows. However this creates impo ..."
Abstract

Cited by 14 (6 self)
 Add to MetaCart
Advice is a mechanism, widely used in aspectoriented languages, that allows one program component to augment or modify the behavior of other components. When advice and other components are composed together they become tightly coupled, sharing both control and data flows. However this creates important problems: modular reasoning about a component becomes very difficult; and two tightly coupled components may interfere with each other’s control and data flows. This paper presents EffectiveAdvice, a disciplined model of advice, inspired by Aldrich’s Open Modules, that has full support for effects. With EffectiveAdvice, equivalence of advice, as well as base components, can be checked by equational reasoning. The paper describes EffectiveAdvice as a Haskell library in which advice is modeled by mixin inheritance and effects are modeled by monads. Interference patterns previously identified in the literature are expressed as combinators. Parametricity, together with the combinators, is used to prove two harmless advice theorems. The result is an effective semantic model of advice that supports effects, and allows these effects to be separated with strong noninterference guarantees, or merged as needed.
ML modules and Haskell type classes: A constructive comparison
 Master’s thesis, AlbertLudwigsUniversität Freiburg (November 2005) http://www. informatik.unifreiburg.de/ ∼ wehr/publications/Wehr2005.html
"... Abstract. Researchers repeatedly observed that the module system of ML and the type class mechanism of Haskell are related. So far, this relationship has received little formal investigation. The work at hand fills this gap: It introduces typepreserving translations from modules to type classes and ..."
Abstract

Cited by 8 (0 self)
 Add to MetaCart
Abstract. Researchers repeatedly observed that the module system of ML and the type class mechanism of Haskell are related. So far, this relationship has received little formal investigation. The work at hand fills this gap: It introduces typepreserving translations from modules to type classes and vice versa, which enable a thorough comparison of the two concepts. 1
Programming monads operationally with Unimo
 In ICFP
, 2006
"... Monads are widely used in Haskell for modeling computational effects, but defining monads remains a daunting challenge. Since every part of a monad’s definition depends on its computational effects, programmers cannot leverage the common behavior of all monads easily and thus must build from scratch ..."
Abstract

Cited by 7 (2 self)
 Add to MetaCart
Monads are widely used in Haskell for modeling computational effects, but defining monads remains a daunting challenge. Since every part of a monad’s definition depends on its computational effects, programmers cannot leverage the common behavior of all monads easily and thus must build from scratch each monad that models a new computational effect. I propose the Unimo framework which allows programmers to define monads and monad transformers in a modular manner. Unimo contains a heavily parameterized observer function which enforces the monad laws, and programmers define a monad by invoking the observer function with arguments that specify the computational effects of the monad. Since Unimo provides the common behavior of all monads in a reusable form, programmers no longer need to rebuild the semantic boilerplate for each monad and can instead focus on the more interesting and rewarding task of modeling the desired computational effects.
Equality proofs and deferred type errors: a compiler pearl
 In ICFP
, 2012
"... The Glasgow Haskell Compiler is an optimizing compiler that expresses and manipulates firstclass equality proofs in its intermediate language. We describe a simple, elegant technique that exploits these equality proofs to support deferred type errors. The technique requires us to treat equality pro ..."
Abstract

Cited by 6 (0 self)
 Add to MetaCart
The Glasgow Haskell Compiler is an optimizing compiler that expresses and manipulates firstclass equality proofs in its intermediate language. We describe a simple, elegant technique that exploits these equality proofs to support deferred type errors. The technique requires us to treat equality proofs as possiblydivergent terms; we show how to do so without losing either soundness or the zerooverhead cost model that the programmer expects.