2006
DOI: 10.1007/11821069_1
|View full text |Cite
|
Sign up to set email alerts
|

A Core Calculus for Scala Type Checking

Abstract: Abstract. We present a minimal core calculus that captures interesting constructs of the Scala programming language: nested classes, abstract types, mixin composition, and path dependent types. We show that the problems of type assignment and subtyping in this calculus are decidable.

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
2
1

Citation Types

1
37
0

Year Published

2007
2007
2016
2016

Publication Types

Select...
6

Relationship

2
4

Authors

Journals

citations
Cited by 40 publications
(39 citation statements)
references
References 24 publications
(11 reference statements)
1
37
0
Order By: Relevance
“…Previous formalizations include the νObj calculus (Odersky et al, 2003), Featherweight Scala (Cremet et al, 2006) and Scalina (Moors et al, 2008). The νObj calculus features a rich type language, including distinct notions of singleton types, type selections, record types, class types and compound types.…”
Section: Related Workmentioning
confidence: 99%
See 2 more Smart Citations
“…Previous formalizations include the νObj calculus (Odersky et al, 2003), Featherweight Scala (Cremet et al, 2006) and Scalina (Moors et al, 2008). The νObj calculus features a rich type language, including distinct notions of singleton types, type selections, record types, class types and compound types.…”
Section: Related Workmentioning
confidence: 99%
“…Furthermore, subtyping in νObj lacks unique upper or lower bounds, and mixin composition is not commutative. Type checking in νObj was shown to be undecidable, prompting the development of Featherweight Scala (Cremet et al, 2006) as an attempt at a calculus with decidable type checking. Scalina (Moors et al, 2008) was proposed as a formal underpinning for introducing higher-kinded types in Scala.…”
Section: Related Workmentioning
confidence: 99%
See 1 more Smart Citation
“…If the call on line 8 is dispatched on an object of this type, it will dispatch to A.foo, as previously discussed. Hence, this approach would create a smaller call graph in which there is only one outgoing edge for the call on line 8.…”
Section: Traitsmentioning
confidence: 99%
“…We consider how key Scala features such as traits, abstract type members, and closures can be accommodated, and present a family of successively more precise algorithms. In a separate technical report [4], we formally define our most precise algorithm for FS alg , the "Featherweight Scala" subset of Scala that was previously defined by Cremet et al [8], and prove its correctness by demonstrating that for each execution of a method call in the operational semantics, a corresponding edge exists in the constructed call graph.…”
Section: Introductionmentioning
confidence: 99%