2013
DOI: 10.1145/2450136.2450137
|View full text |Cite
|
Sign up to set email alerts
|

Mixin’ Up the ML Module System

Abstract: ML modules provide hierarchical namespace management, as well as fine-grained control over the propagation of type information, but they do not allow modules to be broken up into mutually recursive, separately compilable components. Mixin modules facilitate recursive linking of separately compiled components, but they are not hierarchically composable and typically do not support type abstraction. We synthesize the complementary advantages of these two mechanisms in a novel module system design we call MixML.A… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
14
0

Year Published

2013
2013
2022
2022

Publication Types

Select...
4
2

Relationship

2
4

Authors

Journals

citations
Cited by 17 publications
(14 citation statements)
references
References 52 publications
0
14
0
Order By: Relevance
“…Nevertheless, the basic ideas of the "F-ing" approach still apply: a semantics for recursive modules can be given using a variation of our elaboration, and targeting a language that is a conservative extension of F ω . The first and last authors' work on MixML, a module system with recursive mixin composition, explores precisely that path (Rossberg & Dreyer, 2013).…”
Section: Resultsmentioning
confidence: 99%
See 2 more Smart Citations
“…Nevertheless, the basic ideas of the "F-ing" approach still apply: a semantics for recursive modules can be given using a variation of our elaboration, and targeting a language that is a conservative extension of F ω . The first and last authors' work on MixML, a module system with recursive mixin composition, explores precisely that path (Rossberg & Dreyer, 2013).…”
Section: Resultsmentioning
confidence: 99%
“…However, with the generalization to applicative functors, this factoring leads to a more complicated algorithm: in that system, lookup and subtyping become intertwined, which means that to separate them, lookup has to duplicate some of the work of subtyping, and its correctness proof needs to make sure that both algorithms operate in sync. The issue of rootedness could be avoided by decorating semantic signatures with "locators" (compare with Rossberg & Dreyer (2013)). A more traditional, interleaved, and algorithmic definition of matching would eliminate the need for a correctness proof altogether (while slightly complicating the declarative semantics and its soundness proof).…”
Section: Decidabilitymentioning
confidence: 99%
See 1 more Smart Citation
“…For example, the previous functions could equivalently be written as It may seem surprising that we can just reify types as first-class values. But reified types (or "atomic type modules") have been common in module calculi for a long time [16,6,24,25]. We are merely making them available in the source language directly.…”
Section: ML With Explicit Typesmentioning
confidence: 99%
“…Packaged Modules The first concrete proposal for extending ML with packaged modules was by Russo [27], and is implemented in Moscow ML. Later work on type systems for modules routinely included them [6,4,24,25], and variations have been implemented in other ML dialects, such as Alice ML [22] and OCaml [7]. To avoid soundness issues in the combination with applicative functors, Russo's original proposal conservatively allowed unpacking a module only local to core-level expressions, but this restriction has been lifted in later systems, restricting only the occurrence of unpacking inside applicative functors.…”
Section: Related Workmentioning
confidence: 99%