{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,5,26]],"date-time":"2026-05-26T23:05:09Z","timestamp":1779836709390,"version":"3.53.1"},"reference-count":15,"publisher":"Cambridge University Press (CUP)","issue":"2","license":[{"start":{"date-parts":[[2016,8,10]],"date-time":"2016-08-10T00:00:00Z","timestamp":1470787200000},"content-version":"unspecified","delay-in-days":9263,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["J. Funct. Prog."],"published-print":{"date-parts":[[1991,4]]},"abstract":"<jats:title>Abstract<\/jats:title>\n                  <jats:p>\n                    This paper presents an application of functional programming: searching a domain for elements which satisfy certain constraints. We give a very general formulation of the problem and describe \u2018generate and test\u2019, \u2018backtracking\u2019 and \u2018forward checking\u2019 algorithms. We then introduce the concept of domain generating functions to capture a common optimization during the search process: using partial solutions to reduce the size of the search space. We compare the efficiency of the original algorithms and those using domain generating functions first with the \u2018classical\u2019\n                    <jats:italic>n<\/jats:italic>\n                    -queens example, and then with a problem having larger domains to search which was inspired by an application in macromolecular structure determination. Using algorithms coded in Miranda, Haskell and Common Lisp, we show that a high order (lazy) functional language is a useful and efficient tool for prototyping search methods in large complex domains.\n                  <\/jats:p>","DOI":"10.1017\/s0956796800020050","type":"journal-article","created":{"date-parts":[[2019,5,17]],"date-time":"2019-05-17T18:01:05Z","timestamp":1558116065000},"page":"213-227","source":"Crossref","is-referenced-by-count":4,"title":["Domain generating functions for solving constraint satisfaction problems"],"prefix":"10.1017","volume":"1","author":[{"given":"Fran\u00e7ois","family":"Major","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Guy","family":"Lapalme","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"family":"Robert Cedergren","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"56","published-online":{"date-parts":[[2016,8,10]]},"reference":[{"key":"S0956796800020050_ref007","first-page":"196","volume-title":"Proceedings of the Fourth International Conference on Logic Programming","author":"Jaffar","year":"1987"},{"key":"S0956796800020050_ref012","doi-asserted-by":"publisher","DOI":"10.1146\/annurev.bi.45.070176.004105"},{"key":"S0956796800020050_ref014","volume-title":"Conference on Functional Programming and Computer Architecture, volume 201 of Lecture Notes in Computer Science","author":"Turner","year":"1985"},{"key":"S0956796800020050_ref004","doi-asserted-by":"publisher","DOI":"10.1016\/0004-3702(80)90051-X"},{"key":"S0956796800020050_ref010","first-page":"445","article-title":"FUS: a system to simulate conformational changes in biological macromolecules","volume":"4","author":"Major","year":"1988","journal-title":"CABIOS"},{"key":"S0956796800020050_ref006","volume-title":"Report on the programming language Haskell, a non-strict purely functional language (Version 1.0)","author":"Hudak","year":"1990"},{"key":"S0956796800020050_ref003","doi-asserted-by":"publisher","DOI":"10.1016\/0968-0004(89)90068-6"},{"key":"S0956796800020050_ref005","volume-title":"Constraint Satisfaction in Logic Programming","author":"Hentenryck","year":"1989"},{"key":"S0956796800020050_ref015","volume-title":"Conference on Functional Programming and Computer Architecture, volume 201 of Lecture Notes in Computer Science","author":"Wadler","year":"1985"},{"key":"S0956796800020050_ref002","volume-title":"Introduction to Functional Programming","author":"Bird","year":"1988"},{"key":"S0956796800020050_ref009","doi-asserted-by":"publisher","DOI":"10.1126\/science.3738524"},{"key":"S0956796800020050_ref001","doi-asserted-by":"publisher","DOI":"10.1093\/comjnl\/32.2.127"},{"key":"S0956796800020050_ref008","doi-asserted-by":"publisher","DOI":"10.2307\/2005469"},{"key":"S0956796800020050_ref011","unstructured":"Major F. , Gautheret D. , Turcotte M. , Lapalme G. , Jolicoeur L. , Fillion E. and Cedergren R. J. The prediction of RNA 3-D structures by combining symbolic and numerical computation. (Submitted for publication, 1990)."},{"key":"S0956796800020050_ref013","volume-title":"Common Lisp, the Language","author":"Steele","year":"1990"}],"container-title":["Journal of Functional Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S0956796800020050","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,5,26]],"date-time":"2026-05-26T22:35:04Z","timestamp":1779834904000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S0956796800020050\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[1991,4]]},"references-count":15,"journal-issue":{"issue":"2","published-print":{"date-parts":[[1991,4]]}},"alternative-id":["S0956796800020050"],"URL":"https:\/\/doi.org\/10.1017\/s0956796800020050","relation":{},"ISSN":["0956-7968","1469-7653"],"issn-type":[{"value":"0956-7968","type":"print"},{"value":"1469-7653","type":"electronic"}],"subject":[],"published":{"date-parts":[[1991,4]]}}}