{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,5,26]],"date-time":"2026-05-26T23:06:01Z","timestamp":1779836761052,"version":"3.53.1"},"reference-count":50,"publisher":"Cambridge University Press (CUP)","license":[{"start":{"date-parts":[[2018,12,27]],"date-time":"2018-12-27T00:00:00Z","timestamp":1545868800000},"content-version":"unspecified","delay-in-days":360,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["J. Funct. Prog."],"published-print":{"date-parts":[[2018]]},"abstract":"<jats:title>Abstract<\/jats:title>\n                  <jats:p>\n                    ML is two languages in one: there is the\n                    <jats:italic>core<\/jats:italic>\n                    , with types and expressions, and there are\n                    <jats:italic>modules<\/jats:italic>\n                    , with signatures, structures, and functors. Modules form a separate, higher-order functional language on top of the core. There are both practical and technical reasons for this stratification; yet, it creates substantial duplication in syntax and semantics, and it imposes seemingly unnecessary limits on expressiveness because it makes modules second-class citizens of the language. For example, selecting one among several possible modules implementing a given interface cannot be made a dynamic decision. Language extensions allowing modules to be packaged up as first-class values have been proposed and implemented in different variations. However, they remedy expressiveness only to some extent and tend to be even more syntactically heavyweight than using second-class modules alone. We propose a redesign of ML in which modules are truly first-class values, and core and module layers are unified into one language. In this \u201c1ML\u201d, functions, functors, and even type constructors are one and the same construct; likewise, no distinction is needed between structures, records, or tuples. Or viewed the other way round, everything is just (\u201ca mode of use of\u201d) modules. Yet, 1ML does not require dependent types: its type structure is expressible in terms of plain System F\n                    <jats:italic>\n                      <jats:sub>\u03c9<\/jats:sub>\n                    <\/jats:italic>\n                    , with a minor variation of our\n                    <jats:italic>F-ing modules<\/jats:italic>\n                    approach. We introduce both an explicitly typed version of 1ML and an extension with Damas\u2013Milner-style implicit quantification. Type inference for this language is not complete, but, we argue, not substantially worse than for Standard ML.\n                  <\/jats:p>","DOI":"10.1017\/s0956796818000205","type":"journal-article","created":{"date-parts":[[2018,12,27]],"date-time":"2018-12-27T05:06:07Z","timestamp":1545887167000},"source":"Crossref","is-referenced-by-count":8,"title":["1ML \u2013 Core and modules united"],"prefix":"10.1017","volume":"28","author":[{"given":"ANDREAS","family":"ROSSBERG","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"56","published-online":{"date-parts":[[2018,12,27]]},"reference":[{"key":"S0956796818000205_ref50","doi-asserted-by":"publisher","DOI":"10.1007\/BF01018828"},{"key":"S0956796818000205_ref49","unstructured":"White, L. , Bour, F. & Yallop, J. (2014) Modular implicits. In ACM SIGPLAN ML Family \/ OCaml Workshops, Kiselyov, O. & Garrigue, J. (eds), EPTCS, no. 198. ACM, pp. 22\u201363."},{"key":"S0956796818000205_ref48","doi-asserted-by":"publisher","DOI":"10.1145\/75277.75283"},{"key":"S0956796818000205_ref47","doi-asserted-by":"publisher","DOI":"10.1145\/1411204.1411246"},{"key":"S0956796818000205_ref46","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796800000393"},{"key":"S0956796818000205_ref43","doi-asserted-by":"publisher","DOI":"10.1145\/317636.317801"},{"key":"S0956796818000205_ref42","doi-asserted-by":"publisher","DOI":"10.1145\/1596627.1596630"},{"key":"S0956796818000205_ref40","first-page":"348","article-title":"First-class structures for Standard ML","volume":"7","author":"Russo","year":"2000","journal-title":"Nord. J. Comput."},{"key":"S0956796818000205_ref39","doi-asserted-by":"publisher","DOI":"10.1007\/10704567_5"},{"key":"S0956796818000205_ref36","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-30936-1_18"},{"key":"S0956796818000205_ref35","doi-asserted-by":"crossref","unstructured":"Rossberg, A. (2015) 1ML\u2013 Core and Modules United (Technical Appendix). Accessed December 11, 2018. Available at: mpi-sws.org\/~rossberg\/1ml\/.","DOI":"10.1017\/S0956796818000205"},{"key":"S0956796818000205_ref33","unstructured":"Rossberg, A. (1999b) Undecidability of OCaml Type Checking. Posting to Caml mailing list, 13 July. Accessed December 11, 2018. Available at: sympa.inria.fr\/sympa\/arc\/caml-list\/1999-07\/msg00027.html."},{"key":"S0956796818000205_ref29","first-page":"41","volume-title":"Object-Oriented Programming, Systems, Languages and Applications (OOPSLA)","author":"Odersky","year":"2005"},{"key":"S0956796818000205_ref27","doi-asserted-by":"crossref","DOI":"10.7551\/mitpress\/2319.001.0001","volume-title":"The Definition of Standard ML (Revised)","author":"Milner","year":"1997"},{"key":"S0956796818000205_ref26","doi-asserted-by":"publisher","DOI":"10.1016\/0022-0000(78)90014-4"},{"key":"S0956796818000205_ref23","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-57880-3_27"},{"key":"S0956796818000205_ref22","doi-asserted-by":"publisher","DOI":"10.1145\/512644.512670"},{"key":"S0956796818000205_ref21","unstructured":"Lillibridge, M. (1997) Translucent Sums: A Foundation for Higher-order Module Systems. PhD thesis, Carnegie Mellon University."},{"key":"S0956796818000205_ref18","doi-asserted-by":"publisher","DOI":"10.1145\/174675.176926"},{"key":"S0956796818000205_ref17","doi-asserted-by":"publisher","DOI":"10.1145\/944705.944709"},{"key":"S0956796818000205_ref16","unstructured":"Kuan, G. & MacQueen, D. (2009) Engineering higher-order modules in SML\/NJ. In International Symposium on the Implementation and Application of Functional Languages (IFL). LNCS, vol. 6041, pp. 218\u2013235."},{"key":"S0956796818000205_ref13","doi-asserted-by":"publisher","DOI":"10.1145\/96709.96744"},{"key":"S0956796818000205_ref12","doi-asserted-by":"publisher","DOI":"10.1145\/169701.169696"},{"key":"S0956796818000205_ref11","doi-asserted-by":"publisher","DOI":"10.1145\/174675.176927"},{"key":"S0956796818000205_ref9","unstructured":"Garrigue, J. & Frisch, A. (2010) First-class modules and composable signatures in Objective Caml 3.12. In ACM SIGPLAN Workshop on ML. Accessed December 11, 2018. Available at: https:\/\/www.math.nagoya-u.ac.jp\/~garrigue\/papers\/ml2010-show.pdf."},{"key":"S0956796818000205_ref7","doi-asserted-by":"publisher","DOI":"10.1145\/604131.604151"},{"key":"S0956796818000205_ref6","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-71316-6_30"},{"key":"S0956796818000205_ref5","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796807006429"},{"key":"S0956796818000205_ref4","unstructured":"Dreyer, D. (2005) Understanding and Evolving the ML Module System. PhD thesis, Carnegie Mellon University."},{"key":"S0956796818000205_ref2","doi-asserted-by":"publisher","DOI":"10.1145\/199448.199478"},{"key":"S0956796818000205_ref1","first-page":"117","volume-title":"Handbook of Logic in Computer Science","volume":"2","author":"Barendregt","year":"1992"},{"key":"S0956796818000205_ref3","doi-asserted-by":"publisher","DOI":"10.1145\/582153.582176"},{"key":"S0956796818000205_ref38","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796814000264"},{"key":"S0956796818000205_ref31","doi-asserted-by":"publisher","DOI":"10.1145\/75277.75284"},{"key":"S0956796818000205_ref44","unstructured":"Shields, M. & Peyton Jones, S. (2002) First-class modules for Haskell. In International Workshop on Foundations of Object-Oriented Languages (FOOL). ACM, pp. 28\u201340."},{"key":"S0956796818000205_ref10","doi-asserted-by":"publisher","DOI":"10.1006\/inco.1999.2830"},{"key":"S0956796818000205_ref19","doi-asserted-by":"publisher","DOI":"10.1145\/199448.199476"},{"key":"S0956796818000205_ref15","doi-asserted-by":"crossref","first-page":"341","DOI":"10.7551\/mitpress\/5641.003.0019","volume-title":"Proof, Language, and Interaction: Essays in Honor of Robin Milner","author":"Harper","year":"2000"},{"key":"S0956796818000205_ref25","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796807006326"},{"key":"S0956796818000205_ref8","doi-asserted-by":"publisher","DOI":"10.1145\/1190216.1190229"},{"key":"S0956796818000205_ref14","volume-title":"Advanced Topics in Types and Programming Languages","author":"Harper","year":"2005"},{"key":"S0956796818000205_ref28","doi-asserted-by":"publisher","DOI":"10.1145\/44501.45065"},{"key":"S0956796818000205_ref34","unstructured":"Rossberg, A. (2006) The missing link \u2013 Dynamic components for ML. In ACM SIGPLAN International Conference on Functional Programming (ICFP). ACM, pp. 99\u2013110."},{"key":"S0956796818000205_ref32","unstructured":"Rossberg, A. (1999a) Defects in the Revised Definition of Standard ML. Technical report, Max Planck Institute for Software Systems. Accessed December 11, 2018. Available at: mpi-sws.org\/~rossberg\/sml-defects.html."},{"key":"S0956796818000205_ref45","doi-asserted-by":"publisher","DOI":"10.1145\/1183278.1183281"},{"key":"S0956796818000205_ref30","doi-asserted-by":"publisher","DOI":"10.1145\/218570.218572"},{"key":"S0956796818000205_ref20","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796800001933"},{"key":"S0956796818000205_ref24","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-39634-2_5"},{"key":"S0956796818000205_ref41","doi-asserted-by":"publisher","DOI":"10.1016\/S1571-0661(05)82621-0"},{"key":"S0956796818000205_ref37","doi-asserted-by":"publisher","DOI":"10.1145\/2450136.2450137"}],"container-title":["Journal of Functional Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S0956796818000205","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,5,26]],"date-time":"2026-05-26T22:36:46Z","timestamp":1779835006000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S0956796818000205\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2018]]},"references-count":50,"alternative-id":["S0956796818000205"],"URL":"https:\/\/doi.org\/10.1017\/s0956796818000205","relation":{},"ISSN":["0956-7968","1469-7653"],"issn-type":[{"value":"0956-7968","type":"print"},{"value":"1469-7653","type":"electronic"}],"subject":[],"published":{"date-parts":[[2018]]},"article-number":"e22"}}