{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,4,22]],"date-time":"2026-04-22T20:56:01Z","timestamp":1776891361024,"version":"3.51.2"},"reference-count":10,"publisher":"Centre pour la Communication Scientifique Directe (CCSD)","issue":"4","license":[{"start":{"date-parts":[[2008,3,18]],"date-time":"2008-03-18T00:00:00Z","timestamp":1205798400000},"content-version":"unspecified","delay-in-days":0,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["J. Funct. Prog."],"published-print":{"date-parts":[[2008,7]]},"abstract":"<jats:title>Abstract<\/jats:title>\n                  <jats:p>This paper describes a technique for assembling both data types and functions from isolated individual components. We also explore how the same technology can be used to combine free monads and, as a result, structure Haskell's monolithic IO monad.<\/jats:p>","DOI":"10.1017\/s0956796808006758","type":"journal-article","created":{"date-parts":[[2008,3,18]],"date-time":"2008-03-18T05:12:02Z","timestamp":1205817122000},"page":"423-436","source":"Crossref","is-referenced-by-count":214,"title":["Data types \u00e0 la carte"],"prefix":"10.46298","volume":"18","author":[{"given":"WOUTER","family":"SWIERSTRA","sequence":"first","affiliation":[]}],"member":"25203","published-online":{"date-parts":[[2008,3,18]]},"reference":[{"key":"S0956796808006758_manual_ref-3","first-page":"297","volume-title":"Conference record of the ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages","author":"Johann","year":"2008"},{"key":"S0956796808006758_manual_ref-4","first-page":"333","volume-title":"Conference record of the ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages","author":"Liang","year":"1995"},{"key":"S0956796808006758_manual_ref-5","doi-asserted-by":"publisher","DOI":"10.1145\/1140335.1140352"},{"key":"S0956796808006758_manual_ref-10","unstructured":"Wadler, P. (1998). The Expression Problem. Accessed at http:\/\/homepages.inf.ed.ac.uk\/wadler\/papers\/expression\/expression.txt."},{"key":"S0956796808006758_manual_ref-6","doi-asserted-by":"publisher","DOI":"10.1145\/581478.581492"},{"key":"S0956796808006758_manual_ref-9","doi-asserted-by":"publisher","DOI":"10.1145\/1291201.1291206"},{"key":"S0956796808006758_manual_ref-1","doi-asserted-by":"publisher","DOI":"10.1093\/acprof:oso\/9780198568612.001.0001"},{"key":"S0956796808006758_manual_ref-7","doi-asserted-by":"publisher","DOI":"10.1007\/3540543961_7"},{"key":"S0956796808006758_manual_ref-2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-73228-0_16"},{"key":"S0956796808006758_manual_ref-8","doi-asserted-by":"crossref","unstructured":"Sheard, T. (2001) Generic unification via two-level types and parameterized modules. In Proceedings of the ACM SIGPLAN International Conference on Functional Programming. Florence, Italy, pp. 86\u201397.","DOI":"10.1145\/507635.507648"}],"container-title":["Journal of Functional Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S0956796808006758","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,4,22]],"date-time":"2026-04-22T20:19:10Z","timestamp":1776889150000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S0956796808006758\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2008,3,18]]},"references-count":10,"journal-issue":{"issue":"4","published-print":{"date-parts":[[2008,7]]}},"alternative-id":["S0956796808006758"],"URL":"https:\/\/doi.org\/10.1017\/s0956796808006758","relation":{},"ISSN":["0956-7968","1469-7653"],"issn-type":[{"value":"0956-7968","type":"print"},{"value":"1469-7653","type":"electronic"}],"subject":[],"published":{"date-parts":[[2008,3,18]]}}}