2016
DOI: 10.1007/978-3-319-30936-1_14
|View full text |Cite
|
Sign up to set email alerts
|

The Essence of Dependent Object Types

Abstract: Abstract. Focusing on path-dependent types, the paper develops foundations for Scala from first principles. Starting from a simple calculus D<: of dependent functions, it adds records, intersections and recursion to arrive at DOT, a calculus for dependent object types. The paper shows an encoding of System F with subtyping in D<: and demonstrates the expressiveness of DOT by modeling a range of Scala constructs in it.

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
3
2

Citation Types

0
79
0

Year Published

2016
2016
2019
2019

Publication Types

Select...
3
3
2

Relationship

3
5

Authors

Journals

citations
Cited by 63 publications
(85 citation statements)
references
References 30 publications
0
79
0
Order By: Relevance
“…In Scala, box.C is a path-dependent type [5,6]; box.C is equivalent to the type box.type#C which selects type C from the singleton type box.type. The type box.type is only compatible with singleton types x.type where the type checker can prove that x and box are always aliases.…”
Section: Overviewmentioning
confidence: 99%
See 2 more Smart Citations
“…In Scala, box.C is a path-dependent type [5,6]; box.C is equivalent to the type box.type#C which selects type C from the singleton type box.type. The type box.type is only compatible with singleton types x.type where the type checker can prove that x and box are always aliases.…”
Section: Overviewmentioning
confidence: 99%
“…To support such patterns LACASA enables boxes to have unique fields which store boxes. 6 Access is restricted to maintain external uniqueness [18] of unique fields (see Section 3 for a formalization of the uniqueness and aliasing guarantees of unique fields).…”
Section: Overviewmentioning
confidence: 99%
See 1 more Smart Citation
“…After many false starts, the first mechanized soundness proof for a calculus of the DOT (Dependent Object Types) [4] family was finally presented in 2014 [5].…”
Section: Introductionmentioning
confidence: 99%
“…However, in a language like Scala which is enriched with features like inheritance, typecase [1], traits [9], GADTs [4,12], path-dependent types [2] and union types [3], exhaustivity checking becomes complex. Without good abstraction, each feature complicates the algorithm a little bit and the combination of features results in a monolithic algorithm that's impossible to maintain.…”
Section: Introductionmentioning
confidence: 99%