2018
DOI: 10.1145/3276483
|View full text |Cite
|
Sign up to set email alerts
|

Julia subtyping: a rational reconstruction

Abstract: Programming languages that support multiple dispatch rely on an expressive notion of subtyping to specify method applicability. In these languages, type annotations on method declarations are used to select, out of a potentially large set of methods, the one that is most appropriate for a particular tuple of arguments. Julia is a language for scientific computing built around multiple dispatch and an expressive subtyping relation. This paper provides the first formal definition of Julia's subtype relation and … Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
12
0

Year Published

2018
2018
2023
2023

Publication Types

Select...
5
1
1

Relationship

2
5

Authors

Journals

citations
Cited by 23 publications
(21 citation statements)
references
References 24 publications
0
12
0
Order By: Relevance
“…4.1.3 Type Annotations. Julia offers a rich type annotation language to express constraints on fields, parameters, local variables, and method return types [Zappa Nardelli et al 2018]. The :: operator ascribes a type to a definition.…”
Section: ✝ ✆mentioning
confidence: 99%
See 1 more Smart Citation
“…4.1.3 Type Annotations. Julia offers a rich type annotation language to express constraints on fields, parameters, local variables, and method return types [Zappa Nardelli et al 2018]. The :: operator ascribes a type to a definition.…”
Section: ✝ ✆mentioning
confidence: 99%
“…For example, Tuple{T,T} where T can be seen as Union{Tuple{Int8,Int8},Tuple{Int16,Int16},...}, where T ranges over all concrete types. The details of subtyping are intricate and the interactions between features can be surprising, we describe those in a companion paper [Zappa Nardelli et al 2018].…”
Section: ✝ ✆mentioning
confidence: 99%
“…In the realm of dynamic languages, Bezanson [4] employed subtyping for multiple dynamic dispatch in the Julia language. Julia has a rich language of type annotations (including, but not limited to, nominal types, tuples, and unions) and a complex subtyping relation [20]. However, it is not clear whether the subtyping relation is decidable or even transitive, and transitivity of subtyping is important for correct implementation of method resolution.…”
Section: Related Workmentioning
confidence: 99%
“…An even greater challenge we have yet to approach, though, is contexts that change as the algorithm recurses. For example, Julia [Bezanson et al 2017] has a UnionAll type constructor that is essentially upper-and-lower-bounded existential quantification [Zappa Nardelli et al 2018]. As the algorithm recurses, it unpacks these existential types when they are on the left-hand side, adding their type variables and respective bounds to the kind context.…”
Section: Julia and Changing Kind Contextsmentioning
confidence: 99%
“…Typed Racket [Tobin-Hochstadt and Felleisen 2008], on the other hand, can recognize distributivity, but cannot recognize deeper properties such as the fact that a pair of union types is equivalent to a union of pair types. Julia only has union types but is capable of such deeper reasoning [Bezanson et al 2017;Zappa Nardelli et al 2018]. However, it is unknown whether Julia subtyping is decidable or even transitive, which are particularly important questions for Julia since subtyping is heavily used in its operational semantics, and which we discuss in more detail near the end of this paper.…”
Section: Introductionmentioning
confidence: 99%