{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,2,5]],"date-time":"2026-02-05T06:33:27Z","timestamp":1770273207966,"version":"3.49.0"},"reference-count":61,"publisher":"Association for Computing Machinery (ACM)","issue":"1","license":[{"start":{"date-parts":[[2013,4,1]],"date-time":"2013-04-01T00:00:00Z","timestamp":1364774400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Program. Lang. Syst."],"published-print":{"date-parts":[[2013,4]]},"abstract":"<jats:p>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.<\/jats:p><jats:p>A MixML module is like an ML structure in which some of the components are specified but not defined. In other words, it unifies the ML structure and signature languages into one. MixML seamlessly integrates hierarchical composition, translucent ML-style data abstraction, and mixin-style recursive linking. Moreover, the design of MixML is clean and minimalist; it emphasizes how all the salient, semantically interesting features of the ML module system (and several proposed extensions to it) can be understood simply as stylized uses of a small set of orthogonal underlying constructs, with mixin composition playing a central role.<\/jats:p><jats:p>We provide a declarative type system for MixML, including two important extensions: higher-order modules, and modules as first-class values. We also present a sound and complete, three-pass type-checking algorithm for this system. The operational semantics of MixML is defined by an elaboration translation into an internal core language called LTG---namely, a polymorphic lambda calculus with single-assignment references and recursive type generativity---which employs a linear type and kind system to track definedness of term and type imports.<\/jats:p>","DOI":"10.1145\/2450136.2450137","type":"journal-article","created":{"date-parts":[[2013,5,1]],"date-time":"2013-05-01T19:47:09Z","timestamp":1367437629000},"page":"1-84","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":17,"title":["Mixin\u2019 Up the ML Module System"],"prefix":"10.1145","volume":"35","author":[{"given":"Andreas","family":"Rossberg","sequence":"first","affiliation":[{"name":"Google"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Derek","family":"Dreyer","sequence":"additional","affiliation":[{"name":"Max Planck Institute for Software Systems (MPI-SWS)"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2013,4]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"crossref","unstructured":"Abadi M. and Cardelli L. 1996. A Theory of Objects. Springer New York. Abadi M. and Cardelli L. 1996. A Theory of Objects . Springer New York.","DOI":"10.1007\/978-1-4419-8598-9"},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1007\/11693024_6"},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/1086365.1086376"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0960129598002576"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796801004257"},{"key":"e_1_2_1_6_1","volume-title":"Proceedings of the International Colloquium on Automata, Languages and Programming (ICALP\u201903)","author":"Ancona D."},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/504709.504712"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/97945.97982"},{"key":"e_1_2_1_9_1","volume-title":"Proceedings of the International Conference on Computer Languages (ICCL\u201992)","author":"Bracha G."},{"key":"e_1_2_1_10_1","volume-title":"Proceedings of the European Conference on Object-Oriented Programming (ECOOP\u201910)","author":"Bracha G."},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/301618.301641"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1007\/11821069_1"},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/964001.964026"},{"key":"e_1_2_1_14_1","unstructured":"Dreyer D. 2005. Understanding and evolving the ML module system. Ph.D. thesis Carnegie Mellon University Pittsburgh PA. Dreyer D. 2005. Understanding and evolving the ML module system. Ph.D. thesis Carnegie Mellon University Pittsburgh PA."},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796807006429"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/1291151.1291196"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/1411204.1411248"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/604131.604151"},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/1190216.1190229"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/586088.586093"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/232627.232654"},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/277650.277730"},{"key":"e_1_2_1_23_1","unstructured":"Harper R. 2011. Programming in Standard ML. Working draft Carnegie Mellon University Pittsburgh PA. Harper R. 2011. Programming in Standard ML . Working draft Carnegie Mellon University Pittsburgh PA."},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/174675.176927"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/169701.169696"},{"key":"e_1_2_1_26_1","unstructured":"Harper R. and Pierce B. C. 2005. Design considerations for ML-style module systems. In Advanced Topics in Types and Programming Languages B. C. Pierce Ed. MIT Press Cambridge MA. Harper R. and Pierce B. C. 2005. Design considerations for ML-style module systems. In Advanced Topics in Types and Programming Languages B. C. Pierce Ed. MIT Press Cambridge MA."},{"key":"e_1_2_1_27_1","doi-asserted-by":"crossref","unstructured":"Harper R. and Stone C. 2000. A type-theoretic interpretation of Standard ML. In Proof Language and Interaction: Essays in Honor of Robin Milner G. Plotkin C. Stirling and M. Tofte Eds. MIT Press Cambridge MA. Harper R. and Stone C. 2000. A type-theoretic interpretation of Standard ML. In Proof Language and Interaction: Essays in Honor of Robin Milner G. Plotkin C. Stirling and M. Tofte Eds. MIT Press Cambridge MA.","DOI":"10.7551\/mitpress\/5641.003.0019"},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/96709.96744"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/1086642.1086644"},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/2048066.2048141"},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/237721.237731"},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/174675.176926"},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/199448.199476"},{"key":"e_1_2_1_34_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796800003683"},{"key":"e_1_2_1_35_1","unstructured":"Leroy X. 2003. A proposal for recursive modules in Objective Caml. http:\/\/caml.inria.fr\/pub\/papers\/xleroy-recursive_modules-03.pdf. Leroy X. 2003. A proposal for recursive modules in Objective Caml. http:\/\/caml.inria.fr\/pub\/papers\/xleroy-recursive_modules-03.pdf."},{"key":"e_1_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/800055.802036"},{"key":"e_1_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/1708016.1708027"},{"key":"e_1_2_1_38_1","doi-asserted-by":"crossref","unstructured":"Milner R. Tofte M. Harper R. and MacQueen D. 1997. The Definition of Standard ML (revised). MIT Press Cambridge MA. Milner R. Tofte M. Harper R. and MacQueen D. 1997. The Definition of Standard ML (revised) . MIT Press Cambridge MA.","DOI":"10.7551\/mitpress\/2319.001.0001"},{"key":"e_1_2_1_39_1","doi-asserted-by":"publisher","DOI":"10.1145\/1480881.1480926"},{"key":"e_1_2_1_40_1","doi-asserted-by":"publisher","DOI":"10.1145\/28697.28698"},{"key":"e_1_2_1_41_1","doi-asserted-by":"publisher","DOI":"10.1145\/1159803.1159813"},{"key":"e_1_2_1_42_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796811000165"},{"key":"e_1_2_1_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/1028976.1028986"},{"key":"e_1_2_1_44_1","doi-asserted-by":"publisher","DOI":"10.1145\/1167473.1167476"},{"key":"e_1_2_1_45_1","doi-asserted-by":"publisher","DOI":"10.1145\/1094811.1094815"},{"key":"e_1_2_1_46_1","volume-title":"Proceedings of the European Conference on Object-Oriented Programming (ECOOP\u201903)","author":"Odersky M."},{"key":"e_1_2_1_47_1","doi-asserted-by":"publisher","DOI":"10.1145\/1159803.1159815"},{"key":"e_1_2_1_48_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796803000315"},{"key":"e_1_2_1_49_1","doi-asserted-by":"publisher","DOI":"10.1145\/1086365.1086371"},{"key":"e_1_2_1_50_1","doi-asserted-by":"publisher","DOI":"10.1145\/888251.888274"},{"key":"e_1_2_1_51_1","doi-asserted-by":"publisher","DOI":"10.1145\/1159803.1159816"},{"key":"e_1_2_1_52_1","unstructured":"Rossberg A. and Dreyer D. 2008. MixML (project website). http:\/\/www.mpi-sws.mpg.de\/~rossberg\/mixml\/. Rossberg A. and Dreyer D. 2008. MixML (project website). http:\/\/www.mpi-sws.mpg.de\/~rossberg\/mixml\/."},{"key":"e_1_2_1_53_1","doi-asserted-by":"publisher","DOI":"10.1145\/1708016.1708028"},{"key":"e_1_2_1_54_1","unstructured":"Russo C. V. 1998. Types for modules. Ph.D. thesis University of Edinburgh. Russo C. V. 1998. Types for modules. Ph.D. thesis University of Edinburgh."},{"key":"e_1_2_1_55_1","volume-title":"Proceedings of the International Conference on Functional Programming (ICFP\u201999)","author":"Russo C. V.","year":"1999"},{"key":"e_1_2_1_56_1","doi-asserted-by":"publisher","DOI":"10.5555\/645815.668885"},{"key":"e_1_2_1_57_1","doi-asserted-by":"publisher","DOI":"10.1145\/507635.507644"},{"key":"e_1_2_1_58_1","doi-asserted-by":"publisher","DOI":"10.1145\/1183278.1183281"},{"key":"e_1_2_1_59_1","unstructured":"Wadler P. 1990. Linear types can change the world! In Programming Concepts and Methods M. Broy and C. Jones Eds. North Holland. Wadler P. 1990. Linear types can change the world! In Programming Concepts and Methods M. Broy and C. Jones Eds. North Holland."},{"key":"e_1_2_1_60_1","doi-asserted-by":"publisher","DOI":"10.1145\/75277.75283"},{"key":"e_1_2_1_61_1","volume-title":"Advanced Topics in Types and Programming Languages","author":"Walker D."}],"container-title":["ACM Transactions on Programming Languages and Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2450136.2450137","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/2450136.2450137","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T08:18:49Z","timestamp":1750234729000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2450136.2450137"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2013,4]]},"references-count":61,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2013,4]]}},"alternative-id":["10.1145\/2450136.2450137"],"URL":"https:\/\/doi.org\/10.1145\/2450136.2450137","relation":{},"ISSN":["0164-0925","1558-4593"],"issn-type":[{"value":"0164-0925","type":"print"},{"value":"1558-4593","type":"electronic"}],"subject":[],"published":{"date-parts":[[2013,4]]},"assertion":[{"value":"2011-09-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2012-08-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2013-04-01","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}