{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,4,10]],"date-time":"2026-04-10T03:12:30Z","timestamp":1775790750936,"version":"3.50.1"},"publisher-location":"New York, NY, USA","reference-count":61,"publisher":"ACM","license":[{"start":{"date-parts":[[2022,11,29]],"date-time":"2022-11-29T00:00:00Z","timestamp":1669680000000},"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":[],"published-print":{"date-parts":[[2022,11,29]]},"DOI":"10.1145\/3563835.3567661","type":"proceedings-article","created":{"date-parts":[[2022,12,1]],"date-time":"2022-12-01T19:29:59Z","timestamp":1669922999000},"page":"112-127","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":3,"title":["The Principles of the Flix Programming Language"],"prefix":"10.1145","author":[{"given":"Magnus","family":"Madsen","sequence":"first","affiliation":[{"name":"Aarhus University, Denmark"}]}],"member":"320","published-online":{"date-parts":[[2022,12]]},"reference":[{"key":"e_1_3_2_1_1_1","volume-title":"Flix: Nyt sprog fra Aarhus vil g\u00f8re programm\u00f8rens liv lettere med logik i tanken. https:\/\/www.version2.dk\/artikel\/flix-nyt-sprog-fra-aarhus-vil-goere-programmoerens-liv-lettere-med-logik-i-tanken","author":"Andersen Tania","year":"2021","unstructured":"Tania Andersen. 2021. Flix: Nyt sprog fra Aarhus vil g\u00f8re programm\u00f8rens liv lettere med logik i tanken. https:\/\/www.version2.dk\/artikel\/flix-nyt-sprog-fra-aarhus-vil-goere-programmoerens-liv-lettere-med-logik-i-tanken"},{"key":"e_1_3_2_1_2_1","unstructured":"Andrew Gerrand. 2022. Share Memory By Communicating. https:\/\/go.dev\/blog\/codelab-share"},{"key":"e_1_3_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/3344429.3372508"},{"key":"e_1_3_2_1_4_1","unstructured":"George Boole. 1847. The Mathematical Analysis of Logic."},{"key":"e_1_3_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/3341695"},{"key":"e_1_3_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0747-7171(89)80054-9"},{"key":"e_1_3_2_1_7_1","unstructured":"Evan Czaplicki. 2015. Compiler Errors for Humans. https:\/\/elm-lang.org\/news\/compiler-errors-for-humans"},{"key":"e_1_3_2_1_8_1","unstructured":"Evan Czaplicki. 2015. Compilers as Assistants. https:\/\/elm-lang.org\/news\/compilers-as-assistants"},{"key":"e_1_3_2_1_9_1","volume-title":"Type Assignment in Programming Languages. Ph. D. Dissertation","author":"Damas Luis","unstructured":"Luis Damas. 1984. Type Assignment in Programming Languages. Ph. D. Dissertation. The University of Edinburgh."},{"key":"e_1_3_2_1_10_1","unstructured":"D Language Developers. 2022. D Language Specification. https:\/\/dlang.org\/spec\/function.html##pseudo-member"},{"key":"e_1_3_2_1_11_1","unstructured":"The Pony Developers. 2021. Divide by Zero. https:\/\/tutorial.ponylang.io\/gotchas\/divide-by-zero.html"},{"key":"e_1_3_2_1_12_1","unstructured":"Stephen Diehl. 2016. relude: Safe performant user-friendly and lightweight Haskell Standard Library. https:\/\/hackage.haskell.org\/package\/relude"},{"key":"e_1_3_2_1_13_1","unstructured":"Edsger Wybe Dijkstra. 1970. Notes on Structured Programming."},{"key":"e_1_3_2_1_14_1","unstructured":"Joe Duffy. 2018. The Error Model. http:\/\/joeduffyblog.com\/2016\/02\/07\/the-error-model\/"},{"key":"e_1_3_2_1_15_1","doi-asserted-by":"publisher","unstructured":"Jana Dunfield and Neel Krishnaswami. 2021. Bidirectional Typing. ACM Computing Surveys (CSUR) https:\/\/doi.org\/10.1145\/3450952 10.1145\/3450952","DOI":"10.1145\/3450952"},{"key":"e_1_3_2_1_16_1","doi-asserted-by":"publisher","unstructured":"Manuel F\u00e4hndrich and K Rustan M Leino. 2003. Declaring and Checking Non-Null Types in an Object-Oriented Language. In Object-Oriented Programming Systems Languages and Applications (OOPSLA). https:\/\/doi.org\/10.1145\/949305.949332 10.1145\/949305.949332","DOI":"10.1145\/949305.949332"},{"key":"e_1_3_2_1_17_1","volume-title":"Elm in Action","author":"Feldman Richard","unstructured":"Richard Feldman. 2020. Elm in Action. Simon and Schuster."},{"key":"e_1_3_2_1_18_1","unstructured":"Martin Fowler. 2005. FluentInterface. https:\/\/martinfowler.com\/bliki\/FluentInterface.html"},{"key":"e_1_3_2_1_19_1","unstructured":"Troels Henriksen. 2019. Design Flaws in Futhark. https:\/\/futhark-lang.org\/blog\/2019-12-18-design-flaws-in-futhark.html"},{"key":"e_1_3_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/3062341.3062354"},{"key":"e_1_3_2_1_21_1","doi-asserted-by":"publisher","unstructured":"Troels Henriksen Frederik Thor\u0153 Martin Elsman and Cosmin Oancea. 2019. Incremental Flattening for Nested Data Parallelism. In Principles and Practice of Parallel Programming (PPoPP). https:\/\/doi.org\/10.1145\/3293883.3295707 10.1145\/3293883.3295707","DOI":"10.1145\/3293883.3295707"},{"key":"e_1_3_2_1_22_1","article-title":"The Principal Type-Scheme of an Object in Combinatory Logic","author":"Hindley Roger","year":"1969","unstructured":"Roger Hindley. 1969. The Principal Type-Scheme of an Object in Combinatory Logic. Transactions of the American Mathematical Society (AMS).","journal-title":"Transactions of the American Mathematical Society (AMS)."},{"key":"e_1_3_2_1_23_1","doi-asserted-by":"crossref","unstructured":"Charles Antony Richard Hoare. 1978. Communicating Sequential Processes. Commun. ACM.","DOI":"10.1007\/978-1-4757-3472-0_16"},{"key":"e_1_3_2_1_24_1","unstructured":"Graydon Hoare. 2015. Things Rust Shipped Without. https:\/\/graydon2.dreamwidth.org\/218040.html"},{"key":"e_1_3_2_1_25_1","volume-title":"Null References: The Billion Dollar Mistake. Presentation at QCon London.","author":"Hoare Tony","year":"2009","unstructured":"Tony Hoare. 2009. Null References: The Billion Dollar Mistake. Presentation at QCon London."},{"key":"e_1_3_2_1_26_1","doi-asserted-by":"publisher","unstructured":"David Hovemeyer and William Pugh. 2004. Finding Bugs is Easy. In Object-Oriented Programming Systems Languages and Applications (OOPSLA). https:\/\/doi.org\/10.1145\/1052883.1052895 10.1145\/1052883.1052895","DOI":"10.1145\/1052883.1052895"},{"key":"e_1_3_2_1_27_1","unstructured":"Johan Janssen. 2022. Interview with Magnus Madsen about the Flix Programming Language. https:\/\/www.infoq.com\/news\/2022\/02\/flix-programming-language\/"},{"key":"e_1_3_2_1_28_1","volume-title":"Typing Haskell in Haskell. In Haskell Workshop.","author":"Jones Mark P","year":"1999","unstructured":"Mark P Jones. 1999. Typing Haskell in Haskell. In Haskell Workshop."},{"key":"e_1_3_2_1_29_1","volume-title":"Haskell 98 Language and Libraries: The Revised Report","author":"Jones Simon Peyton","unstructured":"Simon Peyton Jones. 2003. Haskell 98 Language and Libraries: The Revised Report. Cambridge University Press."},{"key":"e_1_3_2_1_30_1","volume-title":"Haskell Workshop.","author":"Jones Simon Peyton","year":"1997","unstructured":"Simon Peyton Jones, Mark Jones, and Erik Meijer. 1997. Type classes: an exploration of the design space. In Haskell Workshop."},{"key":"e_1_3_2_1_31_1","unstructured":"Daan Leijen. 2005. Extensible Records with Scoped Labels. Trends in Functional Programming."},{"key":"e_1_3_2_1_32_1","volume-title":"Koka: Programming with Row Polymorphic Effect Types. arXiv.","author":"Leijen Daan","year":"2014","unstructured":"Daan Leijen. 2014. Koka: Programming with Row Polymorphic Effect Types. arXiv."},{"key":"e_1_3_2_1_33_1","doi-asserted-by":"publisher","unstructured":"Daan Leijen. 2017. Type Directed Compilation of Row-Typed Algebraic Effects. In Principles of Programming Languages (POPL). https:\/\/doi.org\/10.1145\/3093333.3009872 10.1145\/3093333.3009872","DOI":"10.1145\/3093333.3009872"},{"key":"e_1_3_2_1_34_1","doi-asserted-by":"crossref","unstructured":"John M Lucassen and David K Gifford. 1988. Polymorphic Effect Systems. In Principles of Programming Languages (POPL).","DOI":"10.1145\/73560.73564"},{"key":"e_1_3_2_1_35_1","doi-asserted-by":"publisher","unstructured":"Magnus Madsen and Ond\u0159ej Lhot\u00e1k. 2018. Implicit Parameters for Logic Programming. In Principles and Practice of Declarative Programming (PPDP). https:\/\/doi.org\/10.1145\/3236950.3236953 10.1145\/3236950.3236953","DOI":"10.1145\/3236950.3236953"},{"key":"e_1_3_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/3213846.3213847"},{"key":"e_1_3_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/3428193"},{"key":"e_1_3_2_1_38_1","doi-asserted-by":"publisher","DOI":"10.1145\/3428222"},{"key":"e_1_3_2_1_39_1","doi-asserted-by":"publisher","DOI":"10.1145\/3485487"},{"key":"e_1_3_2_1_40_1","doi-asserted-by":"publisher","unstructured":"Magnus Madsen Ming-Ho Yee and Ond\u0159ej Lhot\u00e1k. 2016. From Datalog to Flix: A Declarative Language for Fixed Points on Lattices. In Programming Language Design and Implementation (PLDI). https:\/\/doi.org\/10.1145\/2980983.2908096 10.1145\/2980983.2908096","DOI":"10.1145\/2980983.2908096"},{"key":"e_1_3_2_1_41_1","unstructured":"Magnus Madsen Ming-Ho Yee and Ond\u0159ej Lhot\u00e1k. 2016. Programming a Dataflow Analysis in Flix. In Tools for Automatic Program Analysis (TAPAS)."},{"key":"e_1_3_2_1_42_1","doi-asserted-by":"publisher","unstructured":"Magnus Madsen Ramin Zarifi and Ond\u0159ej Lhot\u00e1k. 2018. Tail Call Elimination and Data Representation for Functional Languages on the Java Virtual Machine. In Compiler Construction (CC). https:\/\/doi.org\/10.1145\/3178372.3179499 10.1145\/3178372.3179499","DOI":"10.1145\/3178372.3179499"},{"key":"e_1_3_2_1_43_1","doi-asserted-by":"crossref","unstructured":"Alberto Martelli and Ugo Montanari. 1982. An Efficient Unification Algorithm. ACM Transactions on Programming Languages and Systems (TOPLAS).","DOI":"10.1145\/357162.357169"},{"key":"e_1_3_2_1_44_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0747-7171(89)80013-6"},{"key":"e_1_3_2_1_45_1","unstructured":"Daniel Mendler. 2022. intro: Safe and minimal prelude. https:\/\/hackage.haskell.org\/package\/intro"},{"key":"e_1_3_2_1_46_1","doi-asserted-by":"crossref","unstructured":"Robin Milner. 1978. A Theory of Type Polymorphism in Programming. J. Comput. System Sci..","DOI":"10.1016\/0022-0000(78)90014-4"},{"key":"e_1_3_2_1_47_1","doi-asserted-by":"publisher","DOI":"10.4230\/LIPIcs.ECOOP.2020.3"},{"key":"e_1_3_2_1_48_1","doi-asserted-by":"publisher","DOI":"10.4230\/LIPIcs.ECOOP.2020.25"},{"key":"e_1_3_2_1_49_1","volume-title":"Opening Keynote: Preparing for Scala 3 by Martin Odersky and Adriaan Moors. https:\/\/www.youtube.com\/watch?v=1VDOhiFYW3Y","author":"Odersky Martin","year":"2018","unstructured":"Martin Odersky. 2018. Opening Keynote: Preparing for Scala 3 by Martin Odersky and Adriaan Moors. https:\/\/www.youtube.com\/watch?v=1VDOhiFYW3Y"},{"key":"e_1_3_2_1_50_1","doi-asserted-by":"publisher","unstructured":"Benjamin C Pierce and David N Turner. 2000. Local Type Inference. ACM Transactions on Programming Languages and Systems (TOPLAS) https:\/\/doi.org\/10.1145\/345099.345100 10.1145\/345099.345100","DOI":"10.1145\/345099.345100"},{"key":"e_1_3_2_1_51_1","unstructured":"Rich Hickey. 2022. Simple Made Easy. https:\/\/www.infoq.com\/presentations\/Simple-Made-Easy"},{"key":"e_1_3_2_1_52_1","unstructured":"Scala. 2022. Scala Documentation \u2014 Implicit Classes. https:\/\/docs.scala-lang.org\/overviews\/core\/implicit-classes.html"},{"key":"e_1_3_2_1_53_1","doi-asserted-by":"publisher","unstructured":"Michel Schinz and Martin Odersky. 2001. Tail Call Elimination on the Java Virtual Machine. Electronic Notes in Theoretical Computer Science https:\/\/doi.org\/10.1016\/S1571-0661(05)80459-1 10.1016\/S1571-0661(05)80459-1","DOI":"10.1016\/S1571-0661(05)80459-1"},{"key":"e_1_3_2_1_54_1","unstructured":"Jakob Schjoldager. 2021. Datalogi-adjunkt Magnus Madsen har opfundet et nyt programmeringssprog: Vi st\u00e5r over for et skifte inden for programmeringssprog - her er ideen med det nye Flix. https:\/\/www.computerworld.dk\/art\/257120\/datalogi-adjunkt-magnus-madsen-har-opfundet-et-nyt-programmeringssprog-vi-staar-over-for-et-skifte-inden-for-programmeringssprog-her-er-ideen-med-det-nye-flix"},{"key":"e_1_3_2_1_55_1","unstructured":"Herb Sutter. 2014. Unified Call Syntax. https:\/\/isocpp.org\/files\/papers\/N4165.pdf"},{"key":"e_1_3_2_1_56_1","doi-asserted-by":"crossref","unstructured":"Mads Tofte Lars Birkedal Martin Elsman and Niels Hallenberg. 2004. A Retrospective on Region-based Memory Management. Higher-Order and Symbolic Computation.","DOI":"10.1023\/B:LISP.0000029446.78563.a4"},{"key":"e_1_3_2_1_57_1","doi-asserted-by":"crossref","unstructured":"Mads Tofte and Jean-Pierre Talpin. 1997. Region-based Memory Management. Information and Computation.","DOI":"10.1006\/inco.1996.2613"},{"key":"e_1_3_2_1_58_1","doi-asserted-by":"publisher","unstructured":"Philip Wadler and Stephen Blott. 1989. How to make ad-hoc polymorphism less ad hoc. In Principles of Programming Languages (POPL). https:\/\/doi.org\/10.1145\/75277.75283 10.1145\/75277.75283","DOI":"10.1145\/75277.75283"},{"key":"e_1_3_2_1_59_1","volume-title":"The Free Encyclopedia. https:\/\/en.wikipedia.org\/wiki\/Extension_method","unstructured":"Wikipedia. 2022. Extension Method \u2014 Wikipedia, The Free Encyclopedia. https:\/\/en.wikipedia.org\/wiki\/Extension_method"},{"key":"e_1_3_2_1_60_1","doi-asserted-by":"publisher","unstructured":"Andrew K Wright and Matthias Felleisen. 1994. A Syntactic Approach to Type Soundness. Information and Computation https:\/\/doi.org\/10.1006\/inco.1994.1093 10.1006\/inco.1994.1093","DOI":"10.1006\/inco.1994.1093"},{"key":"e_1_3_2_1_61_1","doi-asserted-by":"publisher","unstructured":"Yichen Xie and Dawson Engler. 2002. Using Redundancies to Find Errors. In Foundations of Software Engineering (FSE). https:\/\/doi.org\/10.1145\/587051.587060 10.1145\/587051.587060","DOI":"10.1145\/587051.587060"}],"event":{"name":"Onward! '22: 2022 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software","location":"Auckland New Zealand","acronym":"Onward! '22","sponsor":["SIGPLAN ACM Special Interest Group on Programming Languages"]},"container-title":["Proceedings of the 2022 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software"],"original-title":[],"link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3563835.3567661","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3563835.3567661","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T19:00:08Z","timestamp":1750186808000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3563835.3567661"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2022,11,29]]},"references-count":61,"alternative-id":["10.1145\/3563835.3567661","10.1145\/3563835"],"URL":"https:\/\/doi.org\/10.1145\/3563835.3567661","relation":{},"subject":[],"published":{"date-parts":[[2022,11,29]]},"assertion":[{"value":"2022-12-01","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}