{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,4,22]],"date-time":"2026-04-22T20:56:09Z","timestamp":1776891369734,"version":"3.51.2"},"reference-count":8,"publisher":"Centre pour la Communication Scientifique Directe (CCSD)","issue":"2","license":[{"start":{"date-parts":[[2009,3,1]],"date-time":"2009-03-01T00:00:00Z","timestamp":1235865600000},"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":[[2009,3]]},"abstract":"<jats:title>Abstract<\/jats:title>\n                  <jats:p>Macros still haven't made their way into typed higher-order programming languages such as Haskell and Standard ML. Therefore, to extend the expressiveness of Haskell or Standard ML, one must express new linguistic features in terms of functions that fit within the static type systems of these languages. This is particularly challenging when introducing features that span across multiple types and that bind variables. We address this challenge by developing, in a step by step manner, mechanisms for encoding patterns and pattern matching in Haskell in a type-safe way.<\/jats:p>","DOI":"10.1017\/s0956796808007089","type":"journal-article","created":{"date-parts":[[2008,12,23]],"date-time":"2008-12-23T05:20:46Z","timestamp":1230009646000},"page":"145-156","source":"Crossref","is-referenced-by-count":9,"title":["Type-safe pattern combinators"],"prefix":"10.46298","volume":"19","author":[{"given":"MORTEN","family":"RHIGER","sequence":"first","affiliation":[]}],"member":"25203","published-online":{"date-parts":[[2009,3,1]]},"reference":[{"key":"S0956796808007089_ref8","doi-asserted-by":"publisher","DOI":"10.1016\/j.tcs.2003.11.017"},{"key":"S0956796808007089_ref2","volume-title":"Proceedings of the 1997 ACM SIGPLAN international conference on functional programming (ICFP 1997).","author":"F\u00e4hndrich","year":"1997"},{"key":"S0956796808007089_ref1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796898003104"},{"key":"S0956796808007089_ref5","unstructured":"Rhiger M. (1999) Deriving a statically typed type-directed partial evaluator. In: Proceedings of the ACM SIGPLAN workshop on partial evaluation and semantics-based program manipulation (PEPM 1999), Danvy, O. (ed). BRICS Note Series, no. NS\u201399\u20131, Department of Computer Science, University of Aarhus, Denmark, pp. 25\u201329."},{"key":"S0956796808007089_ref4","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796800003658"},{"key":"S0956796808007089_ref7","first-page":"307","volume-title":"Proceedings of the fourteenth annual ACM symposium on principles of programming languages (POPL 1987)","author":"Wadler","year":"1987"},{"key":"S0956796808007089_ref3","doi-asserted-by":"publisher","DOI":"10.1007\/10704567_23"},{"key":"S0956796808007089_ref6","doi-asserted-by":"publisher","DOI":"10.1023\/A:1010085415024"}],"container-title":["Journal of Functional Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S0956796808007089","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,4,22]],"date-time":"2026-04-22T20:19:14Z","timestamp":1776889154000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S0956796808007089\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2009,3]]},"references-count":8,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2009,3]]}},"alternative-id":["S0956796808007089"],"URL":"https:\/\/doi.org\/10.1017\/s0956796808007089","relation":{},"ISSN":["0956-7968","1469-7653"],"issn-type":[{"value":"0956-7968","type":"print"},{"value":"1469-7653","type":"electronic"}],"subject":[],"published":{"date-parts":[[2009,3]]}}}