{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,5,13]],"date-time":"2025-05-13T21:57:47Z","timestamp":1747173467853,"version":"3.40.5"},"reference-count":55,"publisher":"Cambridge University Press (CUP)","license":[{"start":{"date-parts":[[2023,10,26]],"date-time":"2023-10-26T00:00:00Z","timestamp":1698278400000},"content-version":"unspecified","delay-in-days":298,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"content-domain":{"domain":["cambridge.org"],"crossmark-restriction":true},"short-container-title":["J. Funct. Prog."],"published-print":{"date-parts":[[2023]]},"abstract":"<jats:title>Abstract<\/jats:title>\n\t  <jats:p>Programming language semantics is an important topic in theoretical computer science, but one that beginners often find challenging. This article provides a tutorial introduction to the subject, in which the language of integers and addition is used as a minimal setting in which to present a range of semantic concepts in simple manner. In this setting, it is easy as 1,2,3.<\/jats:p>","DOI":"10.1017\/s0956796823000072","type":"journal-article","created":{"date-parts":[[2023,10,26]],"date-time":"2023-10-26T09:58:31Z","timestamp":1698314311000},"update-policy":"https:\/\/doi.org\/10.1017\/policypage","source":"Crossref","is-referenced-by-count":1,"title":["Programming language semantics: It\u2019s easy as 1,2,3"],"prefix":"10.1017","volume":"33","author":[{"ORCID":"https:\/\/orcid.org\/0000-0001-9584-5150","authenticated-orcid":false,"given":"GRAHAM","family":"HUTTON","sequence":"first","affiliation":[]}],"member":"56","published-online":{"date-parts":[[2023,10,26]]},"reference":[{"volume-title":"Communicating and Mobile Systems: The Pi Calculus","year":"1999","author":"Milner","key":"S0956796823000072_ref38"},{"key":"S0956796823000072_ref16","doi-asserted-by":"publisher","DOI":"10.1016\/0304-3975(92)90014-7"},{"key":"S0956796823000072_ref20","doi-asserted-by":"publisher","DOI":"10.1145\/363235.363259"},{"key":"S0956796823000072_ref27","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-30936-1_10"},{"key":"S0956796823000072_ref31","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796807006363"},{"key":"S0956796823000072_ref21","unstructured":"Hope, C. (2008) A Functional Semantics for Space and Time. Ph.D. thesis, University of Nottingham."},{"key":"S0956796823000072_ref11","doi-asserted-by":"publisher","DOI":"10.1145\/1411204.1411206"},{"key":"S0956796823000072_ref33","doi-asserted-by":"publisher","DOI":"10.1093\/comjnl\/6.4.308"},{"key":"S0956796823000072_ref17","doi-asserted-by":"publisher","DOI":"10.1145\/289423.289455"},{"key":"S0956796823000072_ref42","unstructured":"Norell, U. (2007) Towards a Practical Programming Language Based on Dependent Type Theory. Ph.D. thesis, Department of Computer Science and Engineering, Chalmers University of Technology."},{"volume-title":"Denotational Semantics: A Methodology for Language Development","year":"1986","author":"Schmidt","key":"S0956796823000072_ref50"},{"key":"S0956796823000072_ref35","doi-asserted-by":"publisher","DOI":"10.1090\/psapm\/019\/0242403"},{"key":"S0956796823000072_ref23","unstructured":"Hu, L. & Hutton, G. (2009) Towards a verified implementation of software transactional memory. In Trends in Functional Programming Volume 9. Intellect, pp. 129\u2013143."},{"key":"S0956796823000072_ref37","unstructured":"MGS. (2022) Midlands Graduate School in the Foundations of Computing Science. Available at: http:\/\/www.cs.nott.ac.uk\/MGS\/."},{"key":"S0956796823000072_ref48","doi-asserted-by":"publisher","DOI":"10.1145\/800194.805852"},{"key":"S0956796823000072_ref53","doi-asserted-by":"publisher","DOI":"10.1145\/357172.357179"},{"key":"S0956796823000072_ref40","doi-asserted-by":"publisher","DOI":"10.1016\/j.jlap.2004.03.008"},{"key":"S0956796823000072_ref47","first-page":"60","article-title":"The origins of structural operational semantics","author":"Plotkin","year":"2004","journal-title":"J. Logic Algebraic Program."},{"key":"S0956796823000072_ref6","first-page":"25","article-title":"Calculating correct compilers","author":"Bahr","year":"2015","journal-title":"J. Funct. Program."},{"key":"S0956796823000072_ref12","doi-asserted-by":"publisher","DOI":"10.1016\/j.scico.2007.10.007"},{"key":"S0956796823000072_ref10","doi-asserted-by":"publisher","DOI":"10.1093\/comjnl\/12.1.41"},{"key":"S0956796823000072_ref28","first-page":"27","article-title":"Compiling a 50-year journey","author":"Hutton","year":"2017","journal-title":"J. Funct. Program."},{"key":"S0956796823000072_ref29","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-27764-4_12"},{"key":"S0956796823000072_ref30","doi-asserted-by":"publisher","DOI":"10.2307\/j.ctv36xw0k5.7"},{"key":"S0956796823000072_ref22","doi-asserted-by":"publisher","DOI":"10.1007\/11964681_6"},{"key":"S0956796823000072_ref2","first-page":"1","article-title":"Domain theory","volume":"3","author":"Abramsky","year":"1994","journal-title":"Handbook of Logic in Computer Science"},{"key":"S0956796823000072_ref4","doi-asserted-by":"publisher","DOI":"10.1145\/888251.888254"},{"key":"S0956796823000072_ref13","doi-asserted-by":"publisher","DOI":"10.7146\/brics.v11i26.21851"},{"key":"S0956796823000072_ref34","doi-asserted-by":"publisher","DOI":"10.1145\/1328438.1328474"},{"key":"S0956796823000072_ref9","doi-asserted-by":"publisher","DOI":"10.1145\/3607855"},{"key":"S0956796823000072_ref3","first-page":"1","article-title":"Game semantics","volume":"165","author":"Abramsky","year":"1999","journal-title":"Comput. Logic"},{"volume-title":"Types and Programming Languages","year":"2002","author":"Pierce","key":"S0956796823000072_ref45"},{"volume-title":"Action Semantics","year":"2005","author":"Mosses","key":"S0956796823000072_ref41"},{"key":"S0956796823000072_ref5","doi-asserted-by":"publisher","DOI":"10.7146\/brics.v10i14.21784"},{"key":"S0956796823000072_ref15","doi-asserted-by":"publisher","DOI":"10.1007\/BF01211308"},{"key":"S0956796823000072_ref24","doi-asserted-by":"crossref","unstructured":"Hu, L. & Hutton, G. (2010) Compiling concurrency correctly: Cutting out the middle man. In Trends in Functional Programming Volume 10. Intellect, pp. 17\u201332.","DOI":"10.2307\/j.ctv36xvmkd.5"},{"key":"S0956796823000072_ref26","doi-asserted-by":"publisher","DOI":"10.1145\/289423.289457"},{"key":"S0956796823000072_ref14","unstructured":"Duignan, B. (2018) Occam\u2019s Razor. Encyclopedia Britannica. Available at: https:\/\/www.britannica.com\/topic\/Occams-razor."},{"key":"S0956796823000072_ref8","doi-asserted-by":"publisher","DOI":"10.1145\/3547624"},{"key":"S0956796823000072_ref19","doi-asserted-by":"publisher","DOI":"10.1017\/CBO9781316576892"},{"key":"S0956796823000072_ref36","doi-asserted-by":"publisher","DOI":"10.1007\/3540543961_7"},{"key":"S0956796823000072_ref39","unstructured":"Moran, A. (1998) Call-By-Name, Call-By-Need, and McCarthy\u2019s Amb. Ph.D. thesis, Chalmers University of Technology."},{"key":"S0956796823000072_ref1","first-page":"1","article-title":"$\\delta$\n\n\n for data: Differentiating data structures","volume":"65","author":"Abbott","year":"2005","journal-title":"Fundam. Inform."},{"key":"S0956796823000072_ref43","unstructured":"OPLSS. (2023) Oregon Programming Languages Summer School. Available at: https:\/\/www.cs.uoregon.edu\/research\/summerschool\/archives.html."},{"key":"S0956796823000072_ref44","doi-asserted-by":"crossref","unstructured":"Pickard, M. & Hutton, G. (2021) Calculating dependently-typed compilers. Proc. ACM Program. Lang. 5(ICFP), 1\u201327.","DOI":"10.1145\/3473587"},{"key":"S0956796823000072_ref46","unstructured":"Plotkin, G. (1981) A Structured Approach to Operational Semantics. Report DAIMI-FN-19. Computer Science Department, Aarhus University, Denmark, pp. 3\u201315."},{"key":"S0956796823000072_ref54","doi-asserted-by":"publisher","DOI":"10.7551\/mitpress\/3054.001.0001"},{"key":"S0956796823000072_ref7","first-page":"30","article-title":"Calculating correct compilers II: Return of the register machines","author":"Bahr","year":"2020","journal-title":"J. Funct. Program."},{"key":"S0956796823000072_ref51","unstructured":"Scott, D. & Strachey, C. (1971) Toward a Mathematical Semantics for Computer Languages. Technical Monograph PRG-6. Oxford Programming Research Group."},{"key":"S0956796823000072_ref55","unstructured":"Wright, J. (2005) Compiling and Reasoning about Exceptions and Interrupts. Ph.D. thesis, University of Nottingham."},{"key":"S0956796823000072_ref52","unstructured":"Wadler, P. (1998) The Expression Problem. Available at: http:\/\/homepages.inf.ed.ac.uk\/wadler\/papers\/expression\/expression.txt."},{"key":"S0956796823000072_ref18","doi-asserted-by":"publisher","DOI":"10.7551\/mitpress\/1188.001.0001"},{"key":"S0956796823000072_ref32","unstructured":"Kahn, G. (1987) Natural semantics. In Proceedings of the 4th Annual Symposium on Theoretical Aspects of Computer Science."},{"key":"S0956796823000072_ref49","doi-asserted-by":"publisher","DOI":"10.1017\/CBO9780511626364"},{"key":"S0956796823000072_ref25","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796897002864"}],"container-title":["Journal of Functional Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S0956796823000072","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2023,10,26]],"date-time":"2023-10-26T09:58:44Z","timestamp":1698314324000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S0956796823000072\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2023]]},"references-count":55,"alternative-id":["S0956796823000072"],"URL":"https:\/\/doi.org\/10.1017\/s0956796823000072","relation":{},"ISSN":["0956-7968","1469-7653"],"issn-type":[{"type":"print","value":"0956-7968"},{"type":"electronic","value":"1469-7653"}],"subject":[],"published":{"date-parts":[[2023]]},"assertion":[{"value":"\u00a9 The Author(s), 2023. Published by Cambridge University Press","name":"copyright","label":"Copyright","group":{"name":"copyright_and_licensing","label":"Copyright and Licensing"}},{"value":"This is an Open Access article, distributed under the terms of the Creative Commons Attribution licence (https:\/\/creativecommons.org\/licenses\/by\/4.0\/), which permits unrestricted re-use, distribution and reproduction, provided the original article is properly cited.","name":"license","label":"License","group":{"name":"copyright_and_licensing","label":"Copyright and Licensing"}},{"value":"This content has been made available to all.","name":"free","label":"Free to read"}],"article-number":"e9"}}