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

A path to DOT: formalizing fully path-dependent types

Abstract: The Dependent Object Types (DOT) calculus aims to formalize the Scala programming language with a focus on path-dependent types -types such as x .a 1 . . . a n .T that depend on the runtime value of a path x .a 1 . . . a n to an object. Unfortunately, existing formulations of DOT can model only types of the form x .A which depend on variables rather than general paths. This restriction makes it impossible to model nested module dependencies. Nesting small components inside larger ones is a necessary ingredient… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
2
1

Citation Types

0
13
0

Year Published

2019
2019
2020
2020

Publication Types

Select...
3
2

Relationship

0
5

Authors

Journals

citations
Cited by 12 publications
(13 citation statements)
references
References 32 publications
0
13
0
Order By: Relevance
“…To demonstrate usefulness of mutual information hiding, consider the example in Fig. 1, adapted from Rapoport and Lhoták [2019], and inspired by the actual implementation of the Scala 3 compiler (Dotty). The example models a system with mutually recursive modules types and symbols, encoded as members of the object pcore and representing separate compilation units.…”
Section: Example: Mutual Information Hidingmentioning
confidence: 99%
See 4 more Smart Citations
“…To demonstrate usefulness of mutual information hiding, consider the example in Fig. 1, adapted from Rapoport and Lhoták [2019], and inspired by the actual implementation of the Scala 3 compiler (Dotty). The example models a system with mutually recursive modules types and symbols, encoded as members of the object pcore and representing separate compilation units.…”
Section: Example: Mutual Information Hidingmentioning
confidence: 99%
“…Alas, pDOT cannot type this code, as pDOT requires that all (recursive) objects ( : ). { } must have a precise self type [Rapoport and Lhoták 2019]. Informally, is precise if the bounds >: <: of all type members that appear hereditarily in satisfy = Ð i.e., if the recursively defined object does not contain any abstract type members (we define this notion formally in Fig.…”
Section: Example: Mutual Information Hidingmentioning
confidence: 99%
See 3 more Smart Citations