{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,4,22]],"date-time":"2026-04-22T20:57:17Z","timestamp":1776891437611,"version":"3.51.2"},"reference-count":15,"publisher":"Centre pour la Communication Scientifique Directe (CCSD)","license":[{"start":{"date-parts":[[2017,7,13]],"date-time":"2017-07-13T00:00:00Z","timestamp":1499904000000},"content-version":"unspecified","delay-in-days":193,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["J. Funct. Prog."],"published-print":{"date-parts":[[2017]]},"abstract":"<jats:title>Abstract<\/jats:title>\n                  <jats:p>\n                    We employ the framework of algebraic effects to augment the list monad with the pruning\n                    <jats:italic>cut<\/jats:italic>\n                    operator known from Prolog. We give two descriptions of the resulting monad: as the monad of free left-zero monoids, and as a composition via a distributive law of the list monad and the \u2018unary idempotent operation\u2019 monad. The scope delimiter of\n                    <jats:italic>cut<\/jats:italic>\n                    arises as a handler.\n                  <\/jats:p>","DOI":"10.1017\/s0956796817000077","type":"journal-article","created":{"date-parts":[[2017,7,13]],"date-time":"2017-07-13T03:52:20Z","timestamp":1499917940000},"source":"Crossref","is-referenced-by-count":8,"title":["Backtracking with cut via a distributive law and left-zero monoids"],"prefix":"10.46298","volume":"27","author":[{"given":"MACIEJ","family":"PIR\u00d3G","sequence":"first","affiliation":[]},{"given":"SAM","family":"STATON","sequence":"additional","affiliation":[]}],"member":"25203","published-online":{"date-parts":[[2017,7,13]]},"reference":[{"key":"S0956796817000077_ref4","doi-asserted-by":"publisher","DOI":"10.1016\/0304-3975(90)90197-P"},{"key":"S0956796817000077_ref14","doi-asserted-by":"publisher","DOI":"10.1016\/j.entcs.2004.08.008"},{"key":"S0956796817000077_ref13","doi-asserted-by":"crossref","unstructured":"Pir\u00f3g M. (2016) Eilenberg\u2013Moore monoids and backtracking monad transformers. In Proceedings 6th Workshop on Mathematically Structured Functional Programming, Electronic Proceedings in Theoretical Computer Science, vol. 207, pp. 23\u201356.","DOI":"10.4204\/EPTCS.207.2"},{"key":"S0956796817000077_ref2","doi-asserted-by":"publisher","DOI":"10.1007\/978-1-4899-0021-0"},{"key":"S0956796817000077_ref6","unstructured":"Cheng E. (2011) Distributive laws for Lawvere theories. Algebra Universalis. arXiv:1112.3076."},{"key":"S0956796817000077_ref7","doi-asserted-by":"crossref","unstructured":"Hinze R. (2000) Deriving backtracking monad transformers. In Proceedings of the 5th ACM SIGPLAN International Conference on Functional Programming (ICFP '00), pp. 186\u2013197.","DOI":"10.1145\/351240.351258"},{"key":"S0956796817000077_ref1","doi-asserted-by":"publisher","DOI":"10.1017\/CBO9781139172752"},{"key":"S0956796817000077_ref10","doi-asserted-by":"publisher","DOI":"10.1016\/j.tcs.2006.03.013"},{"key":"S0956796817000077_ref8","doi-asserted-by":"crossref","unstructured":"Hinze R. (2012) Kan extensions for program optimisation or: Art and Dan explain an old trick. In Proceedings of Mathematics of Program Construction\u201411th International Conference, MPC 2012, Lecture Notes in Computer Science, vol. 7342. Berlin\/Heidelberg: Springer, pp. 324\u2013362.","DOI":"10.1007\/978-3-642-31113-0_16"},{"key":"S0956796817000077_ref11","doi-asserted-by":"publisher","DOI":"10.1016\/j.tcs.2010.09.011"},{"key":"S0956796817000077_ref12","volume-title":"Categories for the Working Mathematician","author":"Mac Lane","year":"1998"},{"key":"S0956796817000077_ref15","doi-asserted-by":"publisher","DOI":"10.2168\/LMCS-9(4:23)2013"},{"key":"S0956796817000077_ref3","doi-asserted-by":"publisher","DOI":"10.1007\/BFb0083084"},{"key":"S0956796817000077_ref5","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796806006058"},{"key":"S0956796817000077_ref9","doi-asserted-by":"publisher","DOI":"10.1016\/j.tcs.2006.07.007"}],"container-title":["Journal of Functional Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S0956796817000077","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,4,22]],"date-time":"2026-04-22T20:19:51Z","timestamp":1776889191000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S0956796817000077\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2017]]},"references-count":15,"alternative-id":["S0956796817000077"],"URL":"https:\/\/doi.org\/10.1017\/s0956796817000077","relation":{},"ISSN":["0956-7968","1469-7653"],"issn-type":[{"value":"0956-7968","type":"print"},{"value":"1469-7653","type":"electronic"}],"subject":[],"published":{"date-parts":[[2017]]},"article-number":"e17"}}