{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2024,1,12]],"date-time":"2024-01-12T00:02:21Z","timestamp":1705017741094},"reference-count":58,"publisher":"Association for Computing Machinery (ACM)","issue":"3-5","license":[{"start":{"date-parts":[[2002,7,1]],"date-time":"2002-07-01T00:00:00Z","timestamp":1025481600000},"content-version":"tdm","delay-in-days":0,"URL":"http:\/\/www.springer.com\/tdm"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Form. Asp. Comput."],"published-print":{"date-parts":[[2002,7]]},"abstract":"<jats:title>Abstract.<\/jats:title><jats:p>At a fundamental level, functional and object-oriented programming languages are all \u2018higher-order\u2019, in the sense that they support computing with values that are themselves pieces of program code encapsulated with a local environment. In functional languages these \u2018active\u2019 values are functions, while in object-oriented languages they are objects. Both styles of higher-order language claim to provide good support for writing adaptable programs, but functional and object-oriented languages achieve this adaptability in different ways: functional programs rely on parameterisation at the value, type and module level, while object-oriented languages rely primarily on subtyping and implementation inheritance. Here we compare these two approaches, mainly in terms of the features and properties of their type systems, and consider the benefits and disadvantages of unifying (or merging) the two paradigms by adding object-oriented features to ML as a base language. We argue that while some of the simpler aspects of object-oriented languages are compatible with ML, adding a full- edged class-based object system to ML leads to an excessively complex type system and relatively little expressive gain, especially if we aim to preserve that mostly functional style of programming that is a major advantage of ML.<\/jats:p>","DOI":"10.1007\/s001650200010","type":"journal-article","created":{"date-parts":[[2003,12,10]],"date-time":"2003-12-10T21:38:13Z","timestamp":1071092293000},"page":"214-232","source":"Crossref","is-referenced-by-count":1,"title":["Should ML be Object-Oriented?"],"prefix":"10.1145","volume":"13","author":[{"given":"David","family":"MacQueen","sequence":"first","affiliation":[{"name":"University of Chicago, Chicago, Illinois, USA, US"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","reference":[{"key":"p_1","doi-asserted-by":"crossref","DOI":"10.1007\/978-1-4419-8598-9","volume-title":"A Theory of Objects","author":"Abadi M.","year":"1996"},{"key":"p_2","doi-asserted-by":"crossref","first-page":"396","DOI":"10.1145\/237721.237809","volume-title":"POPL '96: 23rd ACM SIGPLAN-SIGACT Conference on Principles of Programming Languages","author":"Abadi M.","year":"1996"},{"key":"p_3","first-page":"31","volume-title":"ACM Symposium on Functional Programming Languages and Computer Architecture (FPCA)","author":"Aiken A.","year":"1993"},{"key":"p_4","volume-title":"Value-oriented programming. PowerPoint presentation","author":"Appel A.","year":"1995"},{"issue":"1","key":"p_5","doi-asserted-by":"crossref","first-page":"108","DOI":"10.1006\/inco.1999.2829","article-title":"Comparing object encodings","volume":"155","author":"Bruce K. B.","year":"1999","journal-title":"Information and Computation"},{"key":"p_6","doi-asserted-by":"crossref","unstructured":"[BFP97] Bruce K. B. Fiech A. and Petersen L .: Subtyping is not a good \u2018match \u2019 for object-oriented languages. In ECOOP '97 volume 1241 of LNCS pages 104 - 127 . Springer 1997 .","DOI":"10.1007\/BFb0053376"},{"key":"p_7","first-page":"1045","volume-title":"Proceedings, Fifth International Joint Conference on Artificial Intelligence","author":"Burstall R.","year":"1977"},{"key":"p_8","series-title":"Lecture Notes in Computer Science","first-page":"292","volume-title":"Proceedings","author":"Burstall R.","year":"1979"},{"key":"p_9","first-page":"14","volume-title":"9th Workshop on Foundations of Object-Oriented Languages","author":"Bonniot D.","year":"2002"},{"issue":"1","key":"p_10","doi-asserted-by":"crossref","first-page":"41","DOI":"10.1093\/comjnl\/12.1.41","article-title":"Proving properties of programs by structural induction","volume":"12","author":"Burstall R.","year":"1969","journal-title":"Computer Journal"},{"key":"p_11","volume-title":"Infotech State of the Art Conference, The Software Revolution","author":"Burstall R.","year":"1977"},{"key":"p_12","first-page":"136","volume-title":"Conference Record of the 1980 Lisp Conference","author":"Burstall R. M.","year":"1980"},{"key":"p_13","series-title":"LNCS","first-page":"104","volume-title":"Semantics of Data Types","author":"Cardelli L.","year":"1984"},{"key":"p_15","volume-title":"Formal Description of Programming Concepts","author":"Cardelli L.","year":"1991"},{"key":"p_16","volume-title":"Bad engineering properties of object-oriented languages. Computing Surveys, 28(4es)","author":"Cardelli L.","year":"1996"},{"key":"p_17","first-page":"2208","volume-title":"Handbook of Computer Science and Engineering","author":"Cardelli L.","year":"1997"},{"issue":"4","key":"p_18","doi-asserted-by":"crossref","first-page":"417","DOI":"10.1017\/S0956796800000198","article-title":"A semantic basis for quest","volume":"1","author":"Cardelli L.","year":"1991","journal-title":"Journal of Functional Programming"},{"issue":"4","key":"p_19","doi-asserted-by":"crossref","first-page":"471","DOI":"10.1145\/6041.6042","article-title":"On understanding types, data abstraction, and polymorphism","volume":"17","author":"Cardelli L.","year":"1985","journal-title":"Computing Surveys"},{"key":"p_20","first-page":"273","volume-title":"Proceedings Fourth International Conference on Functional Programming and Computer Architecture","author":"Channing P.","year":"1989"},{"issue":"2","key":"p_21","doi-asserted-by":"crossref","first-page":"329","DOI":"10.1006\/inco.1994.1090","article-title":"A denotational semantics of inheritance and its correctness","volume":"114","author":"Cook W.","year":"1995","journal-title":"Information and Computation"},{"key":"p_22","first-page":"50","volume-title":"Record of the 1994 ACM SIGPLAN Workshop on ML and its Applications","author":"Duggan D.","year":"1994"},{"key":"p_23","volume-title":"Proceedings of the 1995 Mathematical Foundations of Programming Semantics Conference","volume":"1","author":"Eifrig J.","year":"1995"},{"issue":"5","key":"p_24","doi-asserted-by":"crossref","first-page":"235","DOI":"10.1145\/258916.258937","article-title":"Componential set-based analysis","volume":"32","author":"Flanagan C.","year":"1997","journal-title":"ACM SIGPLAN Notices"},{"issue":"3","key":"p_26","doi-asserted-by":"crossref","first-page":"189","DOI":"10.1002\/j.1096-9942.1995.tb00018.x","article-title":"The development of type systems for object-oriented languages","volume":"1","author":"Fisher K.","year":"1996","journal-title":"Theory and Practice of Object Systems"},{"key":"p_27","first-page":"1","volume-title":"Proceedings of the 1999 ACM SIGPLAN Conference on Programming Language Design and Implementation","author":"Fisher K.","year":"1999"},{"key":"p_28","volume-title":"Seventh Workshop on Foundations of Object-Oriented Languages","author":"Fisher K.","year":"2000"},{"key":"p_29","volume-title":"Design Patterns: Elements of Reusable Object-Oriented Software","author":"Gamma E.","year":"1995"},{"key":"p_30","first-page":"61","volume-title":"Software Trends","author":"Gansner E. R.","year":"1993"},{"key":"p_31","volume-title":"Introduction to Programming in SML","author":"Hansen M. R.","year":"1999"},{"key":"p_32","unstructured":"[Har] Harper R.: Introduction to Standard ML. http:\/\/foxnet.cs.cmu.edu\/intro-notes.ps."},{"issue":"4","key":"p_33","doi-asserted-by":"crossref","first-page":"593","DOI":"10.1017\/S0956796800001490","article-title":"A unifying type-theoretic framework for objects","volume":"5","author":"Hofmann M.","year":"1995","journal-title":"Journal of Functional Programming"},{"issue":"2","key":"p_35","doi-asserted-by":"crossref","first-page":"98","DOI":"10.1093\/comjnl\/32.2.98","article-title":"Why functional programming matters","volume":"32","author":"Hughes J.","year":"1989","journal-title":"Computer Journal"},{"key":"p_36","doi-asserted-by":"crossref","first-page":"80","DOI":"10.1145\/73560.73567","volume-title":"ACM Symposium on Principles of Programming Languages (POPL)","author":"Kamin S.","year":"1988"},{"key":"p_37","first-page":"464","volume-title":"Theoretical Aspects of Object-Oriented Programming: Types, Semantics, and Language Design","author":"Kamin S. N.","year":"1994"},{"issue":"3","key":"p_38","doi-asserted-by":"crossref","first-page":"157","DOI":"10.1145\/365230.365257","article-title":"The next 700 programming languages","volume":"9","author":"Landin P.","year":"1966","journal-title":"Communications of the ACM"},{"key":"p_39","volume-title":"The objective caml system. Software and documentation","author":"Leroy X.","year":"1996"},{"key":"p_40","first-page":"524","volume-title":"Proceedings of the 1981 Symposium on Functional Languages and Computer Architecture","author":"MacQueen D. B.","year":"1981"},{"key":"p_41","first-page":"1","volume-title":"9th Workshop on Foundations of Object-Oriented Languages","author":"Millstein T.","year":"2002"},{"key":"p_42","doi-asserted-by":"crossref","first-page":"348","DOI":"10.1016\/0022-0000(78)90014-4","article-title":"A theory of type polymorphism in programming","volume":"17","author":"Milner R.","year":"1978","journal-title":"Journal of Computer and System Scieces"},{"key":"p_43","volume-title":"ML2000 Working Group. Principles and a preliminary design for ML2000","year":"2000"},{"issue":"1","key":"p_45","doi-asserted-by":"crossref","first-page":"35","DOI":"10.1002\/(SICI)1096-9942(199901\/03)5:1<35::AID-TAPO4>3.0.CO;2-4","article-title":"Type inference with constrained types","volume":"5","author":"Odersky M.","year":"1996","journal-title":"Theory and Practice of Object Systems"},{"key":"p_46","first-page":"41","volume-title":"Proceedings of 28th ACM Symposium on Principles of Programming Languages","author":"Odersky M.","year":"2001"},{"key":"p_47","doi-asserted-by":"crossref","DOI":"10.1017\/CBO9780511811326","volume-title":": ML for the Working Programmer","author":"Paulson L. C.","year":"1996","edition":"2"},{"key":"p_48","volume-title":": Types and Programming Languages","author":"Pierce B. C.","year":"2002"},{"issue":"2","key":"p_49","doi-asserted-by":"crossref","first-page":"207","DOI":"10.1017\/S0956796800001040","article-title":"Simple type-theoretic foundations for object-oriented programming","volume":"4","author":"Pierce B. C.","year":"1994","journal-title":"Journal of Functional Programming"},{"key":"p_50","first-page":"252","volume-title":"Proceedings of 25th ACM Symposium on Principles of Programming Languages","author":"Pierce B. C.","year":"1998"},{"key":"p_51","first-page":"122","volume-title":"International Conference on Functional Programming (ICFP)","author":"Pottier F.","year":"1996"},{"key":"p_52","first-page":"228","volume-title":"International Conference on Functional Programming (ICFP)","author":"Pottier F.","year":"1998"},{"key":"p_53","doi-asserted-by":"crossref","first-page":"289","DOI":"10.1145\/62678.62721","volume-title":"Proceedings of the 1988 ACM Conference on Lisp and Functional Programming","author":"Reddy U.","year":"1988"},{"key":"p_54","series-title":"LNCS","doi-asserted-by":"crossref","first-page":"321","DOI":"10.1007\/3-540-57887-0_102","volume-title":"Theoretical Aspects of Computer Software","author":"R\u00e9my D.","year":"1994"},{"key":"p_55","volume-title":"Theoretical Aspects of Object-Oriented Programming: Types, Semantics, and Language Design","author":"R\u00e9my D.","year":"1994"},{"issue":"1","key":"p_56","doi-asserted-by":"crossref","first-page":"27","DOI":"10.1002\/(SICI)1096-9942(1998)4:1<27::AID-TAPO3>3.0.CO;2-4","article-title":"Objective ml: An effective object-oriented extension to ml","volume":"4","author":"R\u00e9my D.","year":"1998","journal-title":"Theory and Practice of Object Systems"},{"key":"p_57","volume-title":"Proceedings of the Third Workshop on Foundations of Object-Oriented Languages","author":"Reppy J. H.","year":"1996"},{"key":"p_58","doi-asserted-by":"crossref","first-page":"171","DOI":"10.1145\/231379.231412","volume-title":"Proceedings of the 1996 ACM SIGPLAN Conference on Programming Language Design and Implementation","author":"Reppy J. H.","year":"1996"},{"key":"p_59","series-title":"LNCS","first-page":"408","volume-title":"Proceedings Colloque sur la Programmation","author":"Reynolds J. C.","year":"1974"},{"key":"p_60","volume-title":"Essentials of Standard ML Modules. 1996 Summer School on Advanced Functional Programming","author":"Tofte M.","year":"1996"},{"key":"p_61","first-page":"349","volume-title":"Proceedings of the Third International Static Analysis Symposium","volume":"1145","author":"Trifonov V.","year":"1996"},{"key":"p_62","first-page":"41","volume-title":"Record of the 1994 ACM SIGPLAN Workshop on ML and its Applications","author":"Thorup L.","year":"1994"}],"container-title":["Formal Aspects of Computing"],"original-title":[],"language":"en","link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/s001650200010.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"http:\/\/link.springer.com\/article\/10.1007\/s001650200010\/fulltext.html","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1007\/s001650200010","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2024,1,11]],"date-time":"2024-01-11T17:00:46Z","timestamp":1704992446000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1007\/s001650200010"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2002,7]]},"references-count":58,"journal-issue":{"issue":"3-5","published-print":{"date-parts":[[2002,7]]}},"alternative-id":["10.1007\/s001650200010"],"URL":"https:\/\/doi.org\/10.1007\/s001650200010","relation":{},"ISSN":["0934-5043","1433-299X"],"issn-type":[{"value":"0934-5043","type":"print"},{"value":"1433-299X","type":"electronic"}],"subject":[],"published":{"date-parts":[[2002,7]]}}}