{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,6,25]],"date-time":"2026-06-25T21:24:19Z","timestamp":1782422659565,"version":"3.54.5"},"publisher-location":"Berlin, Heidelberg","reference-count":39,"publisher":"Springer Berlin Heidelberg","isbn-type":[{"value":"9783540442332","type":"print"},{"value":"9783540457886","type":"electronic"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2002]]},"DOI":"10.1007\/3-540-45788-7_4","type":"book-chapter","created":{"date-parts":[[2007,8,28]],"date-time":"2007-08-28T11:04:02Z","timestamp":1188299042000},"page":"67-87","source":"Crossref","is-referenced-by-count":28,"title":["Functional Logic Design Patterns"],"prefix":"10.1007","author":[{"given":"Sergio","family":"Antoy","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Michael","family":"Hanus","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"297","published-online":{"date-parts":[[2002,10,24]]},"reference":[{"key":"4_CR1","series-title":"Lect Notes Comput Sci","first-page":"42","volume-title":"Proc. Workshop on Next Generation Information System Technology","author":"H. A\u00eft-Kaci","year":"1990","unstructured":"H. A\u00eft-Kaci. An overview of LIFE. In J. Schmidt and A. Stogny, editors, Proc. Workshop on Next Generation Information System Technology, pages 42\u201358. Springer LNCS 504, 1990. 68, 69"},{"key":"4_CR2","unstructured":"H. A\u00eft-Kaci, P. Lincoln, and R. Nasr. Le Fun: Logic, equations, and functions. In Proc. 4th IEEE Internat. Symposium on Logic Programming, pages 17\u201323, San Francisco, 1987. 68, 69"},{"key":"4_CR3","series-title":"Lect Notes Comput Sci","doi-asserted-by":"publisher","first-page":"16","DOI":"10.1007\/BFb0027000","volume-title":"Proc. International Conference on Algebraic and Logic Programming (ALP\u201997)","author":"S. Antoy","year":"1997","unstructured":"S. Antoy. Optimal non-deterministic functional logic computations. In Proc. International Conference on Algebraic and Logic Programming (ALP\u201997), pages 16\u201330. Springer LNCS 1298, 1997. 69"},{"issue":"4","key":"4_CR4","doi-asserted-by":"publisher","first-page":"776","DOI":"10.1145\/347476.347484","volume":"47","author":"S. Antoy","year":"2000","unstructured":"S. Antoy, R. Echahed, and M. Hanus. A needed narrowing strategy. Journal of the ACM, 47(4):776\u2013822, 2000. 69, 71","journal-title":"Journal of the ACM"},{"key":"4_CR5","series-title":"Lect Notes Comput Sci","doi-asserted-by":"publisher","first-page":"171","DOI":"10.1007\/10720084_12","volume-title":"Proc. International Workshop on Frontiers of Combining Systems (FroCoS\u20192000)","author":"S. Antoy","year":"2000","unstructured":"S. Antoy and M. Hanus. Compiling multi-paradigm declarative programs into Prolog. In Proc. International Workshop on Frontiers of Combining Systems (FroCoS\u20192000), pages 171\u2013185. Springer LNCS 1794, 2000. 74"},{"key":"4_CR6","doi-asserted-by":"crossref","unstructured":"S. Antoy, M. Hanus, B. Massey, and F. Steiner. An implementation of narrowing strategies. In Proc. of the 3rd International ACM SIGPLAN Conference on Principles and Practice of Declarative Programming (PPDP 2001), pages 207\u2013217. ACM Press, 2001. 78","DOI":"10.1145\/773184.773206"},{"key":"4_CR7","doi-asserted-by":"crossref","unstructured":"K. Beck and W. Cunningham. Using pattern languages for object-oriented programs. In Specification and Design for Object-Oriented Programming (OOPSLA-87), 1987. 67","DOI":"10.1145\/28697.28734"},{"key":"4_CR8","series-title":"Lect Notes Comput Sci","doi-asserted-by":"crossref","first-page":"383","DOI":"10.1007\/3-540-54444-5_114","volume-title":"Proc. of the 3rd Int. Symposium on Programming Language Implementation and Logic Programming","author":"J. Boye","year":"1991","unstructured":"J. Boye. S-SLD-resolution \u2014 an operational semantics for logic programs with external procedures. In Proc. of the 3rd Int. Symposium on Programming Language Implementation and Logic Programming, pages 383\u2013393. Springer LNCS 528, 1991. 69"},{"key":"4_CR9","unstructured":"F. Bueno, D. Cabeza, M. Carro, M. Hermenegildo, P. L\u00f3pez-Garc\u00eda, and G. Puebla. The Ciao Prolog system. Reference manual. Technical report CLIP3\/97.1, School of Computer Science, Technical University of Madrid (UPM), 1997. 68"},{"key":"4_CR10","series-title":"Lect Notes Comput Sci","doi-asserted-by":"publisher","first-page":"85","DOI":"10.1007\/10705424_6","volume-title":"Proc. of the 4th Fuji Int\u2019l Symposium on Functional and Logic Programming","author":"R. Caballero","year":"1999","unstructured":"R. Caballero and F. L\u00f3pez-Fraguas. A functional-logic perspective of parsing. In Proc. of the 4th Fuji Int\u2019l Symposium on Functional and Logic Programming, pages 85\u201399, Tsukuba, Japan, 1999. Springer LNCS 1722. 68"},{"issue":"8","key":"4_CR11","doi-asserted-by":"publisher","first-page":"251","DOI":"10.1145\/258948.258972","volume":"32","author":"K. Claessen","year":"1997","unstructured":"K. Claessen, T. Vullinghs, and E. Meijer. Structuring graphical paradigms in TkGofer. In Proc. of the International Conference on Functional Programming (ICFP\u201997), pages 251\u2013262. ACM SIGPLAN Notices Vol. 32, No. 8, 1997. 81","journal-title":"Proc. of the International Conference on Functional Programming (ICFP\u201997)"},{"key":"4_CR12","unstructured":"J.W. Cooper. Java Design Patterns. Addison Wesley, 2000. 67"},{"key":"4_CR13","doi-asserted-by":"crossref","unstructured":"M. Erwig. Functional programming with graphs. In 2nd ACM SIGPLAN Int. Conf. on Functional Programming (ICFP\u201997), pages 52\u201365, 1997. 81","DOI":"10.1145\/258948.258955"},{"key":"4_CR14","unstructured":"E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison Wesley, 1994. 67, 71"},{"key":"4_CR15","doi-asserted-by":"publisher","first-page":"47","DOI":"10.1016\/S0743-1066(98)10029-8","volume":"40","author":"J. Gonz\u00e1lez-Moreno","year":"1999","unstructured":"J. Gonz\u00e1lez-Moreno, M. Hortal\u00e1-Gonz\u00e1lez, F. L\u00f3pez-Fraguas, and M. Rodr\u00edguez-Artalejo. An approach to declarative programming based on a rewriting logic. Journal of Logic Programming, 40:47\u201387, 1999. 69","journal-title":"Journal of Logic Programming"},{"key":"4_CR16","doi-asserted-by":"crossref","unstructured":"M. Grand. Patterns in Java. J. Wiley, 1998. 67, 71","DOI":"10.1080\/0025570X.1998.11996602"},{"key":"4_CR17","series-title":"Lect Notes Comput Sci","first-page":"1","volume-title":"Proc. of the 4th International Symposium on Programming Language Implementation and Logic Programming","author":"M. Hanus","year":"1992","unstructured":"M. Hanus. Improving control of logic programs by using functional logic languages. In Proc. of the 4th International Symposium on Programming Language Implementation and Logic Programming, pages 1\u201323. Springer LNCS 631, 1992. 69"},{"key":"4_CR18","doi-asserted-by":"publisher","first-page":"583","DOI":"10.1016\/0743-1066(94)90034-5","volume":"19&20","author":"M. Hanus","year":"1994","unstructured":"M. Hanus. The integration of functions into logic programming: From theory to practice. Journal of Logic Programming, 19&20:583\u2013628, 1994. 68","journal-title":"Journal of Logic Programming"},{"issue":"3","key":"4_CR19","doi-asserted-by":"publisher","first-page":"161","DOI":"10.1016\/0743-1066(94)00105-F","volume":"24","author":"M. Hanus","year":"1995","unstructured":"M. Hanus. Analysis of residuating logic programs. Journal of Logic Programming, 24(3):161\u2013199, 1995. 69","journal-title":"Journal of Logic Programming"},{"key":"4_CR20","series-title":"Lect Notes Comput Sci","first-page":"252","volume-title":"Proc. Fifth International Workshop on Logic Program Synthesis and Transformation","author":"M. Hanus","year":"1995","unstructured":"M. Hanus. Efficient translation of lazy functional logic programs into Prolog. In Proc. Fifth International Workshop on Logic Program Synthesis and Transformation, pages 252\u2013266. Springer LNCS 1048, 1995. 69"},{"key":"4_CR21","doi-asserted-by":"crossref","unstructured":"M. Hanus. A unified computation model for functional and logic programming. In Proc. of the 24th ACM Symposium on Principles of Programming Languages (Paris), pages 80\u201393, 1997. 69, 71","DOI":"10.1145\/263699.263710"},{"key":"4_CR22","series-title":"Lect Notes Comput Sci","first-page":"376","volume-title":"Proc. of the International Conference on Principles and Practice of Declarative Programming (PPDP\u201999)","author":"M. Hanus","year":"1999","unstructured":"M. Hanus. Distributed programming in a multi-paradigm declarative language. In Proc. of the International Conference on Principles and Practice of Declarative Programming (PPDP\u201999), pages 376\u2013395. Springer LNCS 1702, 1999. 71"},{"key":"4_CR23","series-title":"Lect Notes Comput Sci","doi-asserted-by":"publisher","first-page":"47","DOI":"10.1007\/3-540-46584-7_4","volume-title":"International Workshop on Practical Aspects of Declarative Languages (PADL\u201900)","author":"M. Hanus","year":"2000","unstructured":"M. Hanus. A functional logic programming approach to graphical user interfaces. In International Workshop on Practical Aspects of Declarative Languages (PADL\u201900), pages 47\u201362. Springer LNCS 1753, 2000. 71, 79, 81, 82"},{"key":"4_CR24","series-title":"Lect Notes Comput Sci","doi-asserted-by":"publisher","first-page":"76","DOI":"10.1007\/3-540-45241-9_6","volume-title":"Proc. of the Third International Symposium on Practical Aspects of Declarative Languages (PADL\u201901)","author":"M. Hanus","year":"2001","unstructured":"M. Hanus. High-level server side web scripting in Curry. In Proc. of the Third International Symposium on Practical Aspects of Declarative Languages (PADL\u201901), pages 76\u201392. Springer LNCS 1990, 2001. 71, 79, 81, 82"},{"key":"4_CR25","unstructured":"M. Hanus, S. Antoy, K. H\u00f6ppner, J. Koj, P. Niederau, R. Sadre, and F. Steiner. PAKCS: The Portland Aachen Kiel Curry System. Available at http:\/\/www.informatik.uni-kiel.de\/~{}pakcs\/ , 2002. 71"},{"key":"4_CR26","unstructured":"M. Hanus and R. Sadre. An abstract machine for Curry and its concurrent implementation in Java. Journal of Functional and Logic Programming, 1999(6), 1999. 78"},{"key":"4_CR27","series-title":"Lect Notes Comput Sci","doi-asserted-by":"crossref","first-page":"374","DOI":"10.1007\/BFb0056627","volume-title":"Principles of Declarative Programming (Proc. Joint International Symposium PLILP\/ALP\u201998)","author":"M. Hanus","year":"1998","unstructured":"M. Hanus and F. Steiner. Controlling search in declarative programs. In Principles of Declarative Programming (Proc. Joint International Symposium PLILP\/ALP\u201998), pages 374\u2013390. Springer LNCS 1490, 1998. 71, 77, 87"},{"key":"4_CR28","unstructured":"M. Hanus (ed.). Curry: An integrated functional logic language (vers. 0.7). Available at http:\/\/www.informatik.uni-kiel.de\/~curry , 2000. 68, 69, 71"},{"key":"4_CR29","unstructured":"E. Horowitz and S. Sahni. Fundamentals of Computer Algorithms. Computer Science Press, 1978. 77"},{"key":"4_CR30","unstructured":"J. Langr. Essential Java Style: Patterns for Implementation. Prentice Hall, 2000. 71, 72"},{"key":"4_CR31","first-page":"1","volume":"3","author":"J. Lloyd","year":"1999","unstructured":"J. Lloyd. Programming in an integrated functional and logic language. Journal of Functional and Logic Programming, (3):1\u201349, 1999. 68, 69","journal-title":"Journal of Functional and Logic Programming"},{"key":"4_CR32","series-title":"Lect Notes Comput Sci","doi-asserted-by":"crossref","first-page":"244","DOI":"10.1007\/3-540-48685-2_19","volume-title":"Proc. of RTA\u2019 99","author":"F. L\u00f3pez-Fraguas","year":"1999","unstructured":"F. L\u00f3pez-Fraguas and J. S\u00e1nchez-Hern\u00e1ndez. TOY: A Multiparadigm Declarative System. In Proc. of RTA\u2019 99, pages 244\u2013247. Springer LNCS 1631, 1999. 68"},{"issue":"1","key":"4_CR33","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1017\/S0956796899003561","volume":"10","author":"E. Meijer","year":"2000","unstructured":"E. Meijer. Server side web scripting in Haskell. Journal of Functional Programming, 10(1):1\u201318, 2000. 81","journal-title":"Journal of Functional Programming"},{"key":"4_CR34","series-title":"Lect Notes Comput Sci","doi-asserted-by":"crossref","first-page":"15","DOI":"10.1007\/3-540-54444-5_84","volume-title":"Proc. of the 3rd Int. Symposium on Programming Language Implementation and Logic Programming","author":"L. Naish","year":"1991","unstructured":"L. Naish. Adding equations to NU-Prolog. In Proc. of the 3rd Int. Symposium on Programming Language Implementation and Logic Programming, pages 15\u201326. Springer LNCS 528, 1991. 68, 69"},{"key":"4_CR35","unstructured":"S. Peyton Jones and J. Hughes. Haskell 98: A non-strict, purely functional language. http:\/\/www.haskell.org , 1999. 69"},{"key":"4_CR36","doi-asserted-by":"crossref","unstructured":"V. Saraswat. Concurrent Constraint Programming. MIT Press, 1993. 71","DOI":"10.7551\/mitpress\/2086.001.0001"},{"key":"4_CR37","unstructured":"C. Schulte and G. Smolka. Encapsulated search for higher-order concurrent constraint programming. In Proc. of the 1994 International Logic Programming Symposium, pages 505\u2013520. MIT Press, 1994. 77"},{"key":"4_CR38","series-title":"Lect Notes Comput Sci","doi-asserted-by":"crossref","first-page":"324","DOI":"10.1007\/BFb0015252","volume-title":"Computer Science Today: Recent Trends and Developments","author":"G. Smolka","year":"1995","unstructured":"G. Smolka. The Oz programming model. In J. van Leeuwen, editor, Computer Science Today: Recent Trends and Developments, pages 324\u2013343. Springer LNCS 1000, 1995. 68"},{"issue":"1\u20133","key":"4_CR39","doi-asserted-by":"publisher","first-page":"17","DOI":"10.1016\/S0743-1066(96)00068-4","volume":"29","author":"Z. Somogyi","year":"1996","unstructured":"Z. Somogyi, F. Henderson, and T. Conway. The execution algorithm of Mercury, an efficient purely declarative logic programming language. Journal of Logic Programming, 29(1\u20133):17\u201364, 1996. 68","journal-title":"Journal of Logic Programming"}],"container-title":["Lecture Notes in Computer Science","Functional and Logic Programming"],"original-title":[],"link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/3-540-45788-7_4","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2020,4,26]],"date-time":"2020-04-26T01:14:32Z","timestamp":1587863672000},"score":1,"resource":{"primary":{"URL":"http:\/\/link.springer.com\/10.1007\/3-540-45788-7_4"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2002]]},"ISBN":["9783540442332","9783540457886"],"references-count":39,"URL":"https:\/\/doi.org\/10.1007\/3-540-45788-7_4","relation":{},"ISSN":["0302-9743"],"issn-type":[{"value":"0302-9743","type":"print"}],"subject":[],"published":{"date-parts":[[2002]]}}}