2019
DOI: 10.1145/3341705
|View full text |Cite
|
Sign up to set email alerts
|

A role for dependent types in Haskell

Abstract: Modern Haskell supports zero-cost coercions, a mechanism where types that share the same run-time representation may be freely converted between. To make sure such conversions are safe and desirable, this feature relies on a mechanism of roles to prohibit invalid coercions. In this work, we show how to incorporate roles into dependent types systems and prove, using the Coq proof assistant, that the resulting system is sound. We have designed this work as a foundation for the addition of dependent types to the … Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1

Citation Types

0
3
0

Year Published

2019
2019
2021
2021

Publication Types

Select...
6
1

Relationship

1
6

Authors

Journals

citations
Cited by 8 publications
(3 citation statements)
references
References 40 publications
0
3
0
Order By: Relevance
“…Idris 1 uses a whole program analysis [42], partly inspired by earlier work on Erasure Pure Type Systems [31] to determine which arguments can be erased, which works well in practice but doesn't allow a programmer to require specific arguments to be erased, and means that separate compilation is difficult. The problem of what to erase also exists in Haskell to some extent, even without full dependent types, when implementing zero cost coercions [46]. Our experience of the 0 multiplicity of QTT so far is that it provides the cleanest solution to the erasure problem, although we no longer infer which other arguments can be erased.…”
Section: Erasurementioning
confidence: 97%
“…Idris 1 uses a whole program analysis [42], partly inspired by earlier work on Erasure Pure Type Systems [31] to determine which arguments can be erased, which works well in practice but doesn't allow a programmer to require specific arguments to be erased, and means that separate compilation is difficult. The problem of what to erase also exists in Haskell to some extent, even without full dependent types, when implementing zero cost coercions [46]. Our experience of the 0 multiplicity of QTT so far is that it provides the cleanest solution to the erasure problem, although we no longer infer which other arguments can be erased.…”
Section: Erasurementioning
confidence: 97%
“…Dependently-typed programming is on the rise. What started as a foundation for mathematics [Coquand and Huet 1988;Martin-Löf 1984] gave rise to powerful interactive verification tools [Bertot and Castéran 2004;Norell 2008] and is now influencing programming languages like Idris [Brady 2013], Haskell [Weirich et al 2019], andTypeScript [typescript handbook 2021]. The trademark of dependent type theories is the dependent function type, where the type of the return value is calculated from the run-time value of the argument.…”
Section: Introductionmentioning
confidence: 99%
“…Pure FP seems to creep closer year by year to type theory, with the recent advent of dependent Haskell [Weirich et al 2019[Weirich et al , 2017, liquid types in Haskell [Vazou et al 2014], hasochism [Lindley and McBride 2013], refinement and dependent types in Racket [Kent 2017], and more. A conceptual midway point between type theory and pure FPÐone not generally pursued in the works just citedÐ is strong functional programming as proposed by Turner [Turner 1995].…”
Section: Introductionmentioning
confidence: 99%