{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,10,11]],"date-time":"2025-10-11T08:20:43Z","timestamp":1760170843808},"reference-count":28,"publisher":"Cambridge University Press (CUP)","issue":"4-5","license":[{"start":{"date-parts":[[2013,9,25]],"date-time":"2013-09-25T00:00:00Z","timestamp":1380067200000},"content-version":"unspecified","delay-in-days":86,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Theory and Practice of Logic Programming"],"published-print":{"date-parts":[[2013,7]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p><jats:italic>Delimited continuations<\/jats:italic> are a famous control primitive that originates in the functional programming world. It allows the programmer to suspend and capture the remaining part of a computation in order to resume it later. We put a new Prolog-compatible face on this primitive and specify its semantics by means of a meta-interpreter. Moreover, we establish the power of delimited continuations in Prolog with several example definitions of high-level language features. Finally, we show how to easily and effectively add delimited continuations support to the WAM.<\/jats:p>","DOI":"10.1017\/s1471068413000331","type":"journal-article","created":{"date-parts":[[2013,9,25]],"date-time":"2013-09-25T16:24:58Z","timestamp":1380126298000},"page":"533-546","source":"Crossref","is-referenced-by-count":7,"title":["Delimited continuations for prolog"],"prefix":"10.1017","volume":"13","author":[{"given":"TOM","family":"SCHRIJVERS","sequence":"first","affiliation":[]},{"given":"BART","family":"DEMOEN","sequence":"additional","affiliation":[]},{"given":"BENOIT","family":"DESOUTER","sequence":"additional","affiliation":[]},{"given":"JAN","family":"WIELEMAKER","sequence":"additional","affiliation":[]}],"member":"56","published-online":{"date-parts":[[2013,9,25]]},"reference":[{"key":"S1471068413000331_ref27","unstructured":"Wielemaker J. and Neumerkel U. 2008. Precise garbage collection in Prolog. In CICLOPS '08, 1\u201315."},{"key":"S1471068413000331_ref24","first-page":"97","article-title":"The BinProlog experience: Architecture and implementation choices for continuation passing Prolog and first-class logic engines.","volume":"12","author":"Tarau","year":"2012","journal-title":"TPLP"},{"key":"S1471068413000331_ref23","first-page":"157","article-title":"XSB: Extending Prolog with tabled logic programming.","volume":"12","author":"Swift","year":"2012","journal-title":"TPLP"},{"key":"S1471068413000331_ref22","unstructured":"Schimpf J. 2002. Logical loops. LNCS, vol. 2401. 224\u2013238."},{"key":"S1471068413000331_ref21","first-page":"132","volume":"24","author":"Roy","year":"1989","journal-title":"A useful extension to prolog's definite clause grammar notation"},{"key":"S1471068413000331_ref17","unstructured":"Masuko M. and Asai K. 2009. Direct implementation of shift and reset in the MinCaml compiler. In ML'09, 49\u201360."},{"key":"S1471068413000331_ref26","volume-title":"An Abstract Prolog Instruction Set","author":"Warren","year":"1983"},{"key":"S1471068413000331_ref25","doi-asserted-by":"crossref","unstructured":"Tarau P. and Dahl V. 1994. Logic programming and logic grammars with first-order continuations. In LOPSTR '94. Vol. 883.","DOI":"10.1007\/3-540-58792-6_14"},{"key":"S1471068413000331_ref16","unstructured":"Le Houitouze S. 1990. A New Data Structure for Implementing Extensions to Prolog. LNCS, vol. 456. 136\u2013150."},{"key":"S1471068413000331_ref10","unstructured":"Demoen B. , Schrijvers T. and Desouter B. 2013. Delimited continuations in Prolog: Semantics, use and implementation in the WAM. Report CW 631, Department of Computer Science, KU Leuven, Belgium."},{"key":"S1471068413000331_ref8","unstructured":"Demoen B. and Nguyen P.-L. 2000. So Many WAM Variations, so Little Time. LNAI, vol. 1861, 1240\u20131254."},{"key":"S1471068413000331_ref4","first-page":"5","article-title":"The YAP Prolog system.","volume":"12","author":"Costa","year":"2012","journal-title":"TPLP"},{"key":"S1471068413000331_ref11","unstructured":"Felleisen M. 1988. The theory and practice of first-class prompts. In POPL '88, 180\u2013190."},{"key":"S1471068413000331_ref1","doi-asserted-by":"crossref","DOI":"10.7551\/mitpress\/7160.001.0001","volume-title":"Warren's Abstract Machine: A Tutorial Reconstruction","author":"A\u00eft-Kaci","year":"1991"},{"key":"S1471068413000331_ref2","unstructured":"Bowen D. , Byrd L. and Clocksin W. 1983. A portable Prolog compiler. In Proceedings of the Logic Programming Workshop, 74\u201383."},{"key":"S1471068413000331_ref5","unstructured":"Danvy O. and Filinski A. 1990. Abstracting control. In LFP '90, 151\u2013160."},{"key":"S1471068413000331_ref12","unstructured":"Holzbaur C. 1992. Meta-Structures vs. Attributed Variables in the Context of Extensible Unification. LNCS, vol. 631, 260\u2013268."},{"key":"S1471068413000331_ref18","doi-asserted-by":"publisher","DOI":"10.1016\/0890-5401(91)90052-4"},{"key":"S1471068413000331_ref3","first-page":"199","volume-title":"ALGOL 68 Implementation","author":"Branquart","year":"1970"},{"key":"S1471068413000331_ref20","doi-asserted-by":"crossref","unstructured":"Plotkin G. and Pretnar M. 2009. Handlers of algebraic effects. In ESOP '09.","DOI":"10.1007\/978-3-642-00590-9_7"},{"key":"S1471068413000331_ref28","first-page":"67","article-title":"SWI-Prolog.","volume":"12","author":"Wielemaker","year":"2012","journal-title":"TPLP"},{"key":"S1471068413000331_ref19","unstructured":"Neumerkel U. 1990. Extensible unification by metastructures. In META'90, 352\u2013364."},{"key":"S1471068413000331_ref13","unstructured":"Ivanovic D. , Morales Caballero J. F. , Carro M. and Hermenegildo M. 2009. Towards structured state threading in Prolog. In CICLOPS 2009."},{"key":"S1471068413000331_ref14","unstructured":"Kiselyov O. 2012. Iteratees. LNCS, vol. 7294, 166\u2013181."},{"key":"S1471068413000331_ref6","unstructured":"De Meuter W. and Roman G.-C. , Eds. 2011. Coordination Models and Languages. LNCS, vol. 6721."},{"key":"S1471068413000331_ref7","unstructured":"Demoen B. 2002. Dynamic attributes, their hProlog implementation, and a first evaluation. Report CW 350, Department of Computer Science, KU Leuven, Belgium."},{"key":"S1471068413000331_ref15","doi-asserted-by":"crossref","unstructured":"Kiselyov O. , Peyton-Jones S. and Sabry A. 2012. Lazy vs. yield: Incremental, lazy pretty-printing. In APLAS.","DOI":"10.1007\/978-3-642-35182-2_14"},{"key":"S1471068413000331_ref9","unstructured":"Demoen B. and Nguyen P.-L. 2008. Two WAM Implementations of Action Rules. LNCS, vol. 5366, 621\u2013635."}],"container-title":["Theory and Practice of Logic Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S1471068413000331","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2024,5,13]],"date-time":"2024-05-13T09:28:45Z","timestamp":1715592525000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S1471068413000331\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2013,7]]},"references-count":28,"journal-issue":{"issue":"4-5","published-print":{"date-parts":[[2013,7]]}},"alternative-id":["S1471068413000331"],"URL":"https:\/\/doi.org\/10.1017\/s1471068413000331","relation":{},"ISSN":["1471-0684","1475-3081"],"issn-type":[{"value":"1471-0684","type":"print"},{"value":"1475-3081","type":"electronic"}],"subject":[],"published":{"date-parts":[[2013,7]]}}}