Skip to main content

Functional Logic Programming: From Theory to Curry

  • Chapter
Programming Logics

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 7797))

Abstract

Functional logic programming languages combine the most important declarative programming paradigms, and attempts to combine these paradigms have a long history. The declarative multi-paradigm language Curry is influenced by recent advances in the foundations and implementation of functional logic languages. The development of Curry is an international initiative intended to provide a common platform for the research, teaching, and application of integrated functional logic languages. This paper surveys the foundations of functional logic programming that are relevant for Curry, the main features of Curry, and extensions and applications of Curry and functional logic programming.

This work was partially supported by the German Research Council (DFG) under grants Ha 2457/5-1 and Ha 2457/5-2 and the NSF under grant CCR-0218224.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Aït-Kaci, H.: An Overview of LIFE. In: Schmidt, J.W., Stogny, A.A. (eds.) EWDW 1990. LNCS, vol. 504, pp. 42–58. Springer, Heidelberg (1991)

    Chapter  Google Scholar 

  2. Aït-Kaci, H., Lincoln, P., Nasr, R.: Le Fun: Logic, equations, and Functions. In: Proc. 4th IEEE Internat. Symposium on Logic Programming, San Francisco, pp. 17–23 (1987)

    Google Scholar 

  3. Albert, E., Hanus, M., Huch, F., Oliver, J., Vidal, G.: Operational Semantics for Declarative Multi-Paradigm Languages. Journal of Symbolic Computation 40(1), 795–829 (2005)

    Article  MathSciNet  MATH  Google Scholar 

  4. Albert, E., Hanus, M., Vidal, G.: Using an Abstract Representation to Specialize Functional Logic Programs. In: Parigot, M., Voronkov, A. (eds.) LPAR 2000. LNCS (LNAI), vol. 1955, pp. 381–398. Springer, Heidelberg (2000)

    Chapter  Google Scholar 

  5. Albert, E., Hanus, M., Vidal, G.: A Practical Partial Evaluator for a Multi-Paradigm Declarative Language. Journal of Functional and Logic Programming 2002(1) (2002)

    Google Scholar 

  6. Alpuente, M., Correa, F.J., Falaschi, M.: A Debugging Scheme for Functional Logic Programs. Electronic Notes in Theoretical Computer Science, vol. 64 (2002)

    Google Scholar 

  7. Alpuente, M., Falaschi, M., Manzo, F.: Analyses of Unsatisfiability for Equational Logic Programming. Journal of Logic Programming 22(3), 223–254 (1995)

    Article  MathSciNet  MATH  Google Scholar 

  8. Alpuente, M., Falaschi, M., Vidal, G.: A Compositional Semantic Basis for the Analysis of Equational Horn Programs. Theoretical Computer Science 165(1), 133–169 (1996)

    Article  MathSciNet  MATH  Google Scholar 

  9. Alpuente, M., Falaschi, M., Vidal, G.: Partial Evaluation of Functional Logic Programs. ACM Transactions on Programming Languages and Systems 20(4), 768–844 (1998)

    Article  Google Scholar 

  10. Alpuente, M., Hanus, M., Lucas, S., Vidal, G.: Specialization of Functional Logic Programs Based on Needed Narrowing. Theory and Practice of Logic Programming 5(3), 273–303 (2005)

    Article  MathSciNet  MATH  Google Scholar 

  11. Antoy, S.: Non-Determinism and Lazy Evaluation in Logic Programming. In: Proc. Int. Workshop on Logic Program Synthesis and Transformation (LOPSTR 1991), pp. 318–331. Springer (1991)

    Google Scholar 

  12. Antoy, S.: Definitional Trees. In: Kirchner, H., Levi, G. (eds.) ALP 1992. LNCS, vol. 632, pp. 143–157. Springer, Heidelberg (1992)

    Chapter  Google Scholar 

  13. Antoy, S.: Optimal Non-Deterministic Functional Logic Computations. In: Hanus, M., Heering, J., Meinke, K. (eds.) ALP 1997 and HOA 1997. LNCS, vol. 1298, pp. 16–30. Springer, Heidelberg (1997)

    Chapter  Google Scholar 

  14. Antoy, S.: Constructor-based Conditional Narrowing. In: Proc. of the 3rd International ACM SIGPLAN Conference on Principles and Practice of Declarative Programming (PPDP 2001), pp. 199–206. ACM Press, New York (2001)

    Google Scholar 

  15. Antoy, S.: Evaluation Strategies for Functional Logic Programming. Journal of Symbolic Computation 40(1), 875–903 (2005)

    Article  MathSciNet  MATH  Google Scholar 

  16. Antoy, S., Ariola, Z.M.: Narrowing the Narrowing Space. In: Hartel, P.H., Kuchen, H. (eds.) PLILP 1997. LNCS, vol. 1292, pp. 1–15. Springer, Heidelberg (1997)

    Chapter  Google Scholar 

  17. Antoy, S., Braßel, B., Hanus, M.: Conditional Narrowing without Conditions. In: Proceedings of the 8th ACM SIGPLAN International Conference on Principles and Practice of Declarative Programming (PPDP 2003), pp. 20–31. ACM Press (2003)

    Google Scholar 

  18. Antoy, S., Echahed, R., Hanus, M.: Parallel Evaluation Strategies for Functional Logic Languages. In: Proc. of the Fourteenth International Conference on Logic Programming (ICLP 1997), pp. 138–152. MIT Press (1997)

    Google Scholar 

  19. Antoy, S., Echahed, R., Hanus, M.: A Needed Narrowing Strategy. Journal of the ACM 47(4), 776–822 (2000)

    Article  MathSciNet  MATH  Google Scholar 

  20. Antoy, S., Hanus, M.: Compiling Multi-Paradigm Declarative Programs into Prolog. In: Kirchner, H. (ed.) FroCos 2000. LNCS, vol. 1794, pp. 171–185. Springer, Heidelberg (2000)

    Chapter  Google Scholar 

  21. Antoy, S., Hanus, M.: Functional Logic Design Patterns. In: Hu, Z., Rodríguez-Artalejo, M. (eds.) FLOPS 2002. LNCS, vol. 2441, pp. 67–87. Springer, Heidelberg (2002)

    Chapter  Google Scholar 

  22. Antoy, S., Hanus, M.: Concurrent Distinct Choices. Journal of Functional Programming 14(6), 657–668 (2004)

    Article  MATH  Google Scholar 

  23. Antoy, S., Hanus, M.: Declarative Programming with Function Patterns. In: Hill, P.M. (ed.) LOPSTR 2005. LNCS, vol. 3901, pp. 6–22. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  24. Antoy, S., Hanus, M.: Overlapping Rules and Logic Variables in Functional Logic Programs. In: Etalle, S., Truszczyński, M. (eds.) ICLP 2006. LNCS, vol. 4079, pp. 87–101. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  25. Antoy, S., Hanus, M.: Set Functions for Functional Logic Programming. In: Proceedings of the 11th ACM SIGPLAN International Conference on Principles and Practice of Declarative Programming (PPDP 2009), pp. 73–82. ACM Press (2009)

    Google Scholar 

  26. Antoy, S., Hanus, M., Liu, J., Tolmach, A.: A Virtual Machine for Functional Logic Computations. In: Grelck, C., Huch, F., Michaelson, G.J., Trinder, P. (eds.) IFL 2004. LNCS, vol. 3474, pp. 108–125. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  27. Antoy, S., Hanus, M., Massey, B., Steiner, F.: An Implementation of Narrowing Strategies. In: Proc. of the 3rd International ACM SIGPLAN Conference on Principles and Practice of Declarative Programming (PPDP 2001), pp. 207–217. ACM Press (2001)

    Google Scholar 

  28. Antoy, S., Johnson, S.: TeaBag: A Functional Logic Language Debugger. In: Proc. 13th International Workshop on Functional and (Constraint) Logic Programming (WFLP 2004), pp. 4–18, Aachen (Germany). Technical Report AIB-2004-05, RWTH Aachen (2004)

    Google Scholar 

  29. Antoy, S., Tolmach, A.: Typed Higher-Order Narrowing without Higher-Order Strategies. In: Middeldorp, A., Sato, T. (eds.) FLOPS 1999. LNCS, vol. 1722, pp. 335–352. Springer, Heidelberg (1999)

    Chapter  Google Scholar 

  30. Arenas-Sánchez, P., Rodríguez-Artalejo, M.: A Semantic Framework for Functional Logic Programming with Algebraic Polymorphic Types. In: Bidoit, M., Dauchet, M. (eds.) CAAP 1997, FASE 1997, and TAPSOFT 1997. LNCS, vol. 1214, pp. 453–464. Springer, Heidelberg (1997)

    Chapter  Google Scholar 

  31. Baader, F., Nipkow, T.: Term Rewriting and All That. Cambridge University Press (1998)

    Google Scholar 

  32. Berghammer, R., Fischer, S.: Implementing Relational Specifications in a Constraint Functional Logic Language. Electronic Notes in Theoretical Computer Science, vol. 177, pp. 169–183 (2007)

    Google Scholar 

  33. Bergstra, J.A., Klop, J.W.: Conditional Rewrite Rules: Confluence and Termination. Journal of Computer and System Sciences 32(3), 323–362 (1986)

    Article  MathSciNet  MATH  Google Scholar 

  34. Bird, R.S., Wadler, P.: Introduction to Functional Programming. Prentice-Hall (1988)

    Google Scholar 

  35. Bonnier, S., Maluszynski, J.: Towards a Clean Amalgamation of Logic Programs with External Procedures. In: Proc. 5th Conference on Logic Programming & 5th Symposium on Logic Programming (Seattle), pp. 311–326. MIT Press (1988)

    Google Scholar 

  36. Braßel, B., Chitil, O., Hanus, M., Huch, F.: Observing Functional Logic Computations. In: Jayaraman, B. (ed.) PADL 2004. LNCS, vol. 3057, pp. 193–208. Springer, Heidelberg (2004)

    Chapter  Google Scholar 

  37. Braßel, B., Hanus, M.: Nondeterminism Analysis of Functional Logic Programs. In: Gabbrielli, M., Gupta, G. (eds.) ICLP 2005. LNCS, vol. 3668, pp. 265–279. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  38. Braßel, B., Hanus, M., Huch, F.: Encapsulating Non-Determinism in Functional Logic Computations. Journal of Functional and Logic Programming 2004(6) (2004)

    Google Scholar 

  39. Brassel, B., Hanus, M., Huch, F., Silva, J., Vidal, G.: Run-Time Profiling of Functional Logic Programs. In: Etalle, S. (ed.) LOPSTR 2004. LNCS, vol. 3573, pp. 182–197. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  40. Braßel, B., Hanus, M., Huch, F., Vidal, G.: A Semantics for Tracing Declarative Multi-Paradigm Programs. In: Proceedings of the 6th ACM SIGPLAN International Conference on Principles and Practice of Declarative Programming (PPDP 2004), pp. 179–190. ACM Press (2004)

    Google Scholar 

  41. Braßel, B., Huch, F.: On a Tighter Integration of Functional and Logic Programming. In: Shao, Z. (ed.) APLAS 2007. LNCS, vol. 4807, pp. 122–138. Springer, Heidelberg (2007)

    Chapter  Google Scholar 

  42. Braßel, B., Huch, F.: The Kiel Curry System KiCS. In: Seipel, D., Hanus, M., Wolf, A. (eds.) INAP 2007. LNCS (LNAI), vol. 5437, pp. 195–205. Springer, Heidelberg (2009)

    Chapter  Google Scholar 

  43. Caballero, R., Rodríguez-Artalejo, M.: DDT: a Declarative Debugging Tool for Functional-Logic Languages. In: Kameyama, Y., Stuckey, P.J. (eds.) FLOPS 2004. LNCS, vol. 2998, pp. 70–84. Springer, Heidelberg (2004)

    Chapter  Google Scholar 

  44. Cheong, P.H., Fribourg, L.: Implementation of Narrowing: The Prolog-Based Approach. In: Apt, K.R., de Bakker, J.W., Rutten, J.J.M.M. (eds.) Logic Programming Languages: Constraints, Functions, and Objects, pp. 1–20. MIT Press (1993)

    Google Scholar 

  45. Cleva, J.M., Leach, J., López-Fraguas, F.J.: A logic programming approach to the verification of functional-logic programs. In: Proceedings of the 6th International ACM SIGPLAN Conference on Principles and Practice of Declarative Programming, pp. 9–19. ACM Press (2004)

    Google Scholar 

  46. Damas, L., Milner, R.: Principal type-schemes for functional programs. In: Proc. 9th Annual Symposium on Principles of Programming Languages, pp. 207–212 (1982)

    Google Scholar 

  47. del Vado Virseda, R.: A Demand-Driven Narrowing Calculus with Overlapping Definitional Trees. In: Proceedings of the 8th ACM SIGPLAN International Conference on Principles and Practice of Declarative Programming (PPDP 2003), pp. 253–263. ACM Press (2003)

    Google Scholar 

  48. Dershowitz, N., Jouannaud, J.-P.: Rewrite Systems. In: van Leeuwen, J. (ed.) Handbook of Theoretical Computer Science, vol. B, pp. 243–320. Elsevier (1990)

    Google Scholar 

  49. Echahed, R., Janodet, J.-C.: Admissible Graph Rewriting and Narrowing. In: Proc. Joint International Conference and Symposium on Logic Programming (JICSLP 1998), pp. 325–340 (1998)

    Google Scholar 

  50. Escobar, S.: Refining Weakly Outermost-Needed Rewriting and Narrowing. In: Proceedings of the 8th ACM SIGPLAN International Conference on Principles and Practice of Declarative Programming (PPDP 2003), pp. 113–123. ACM Press (2003)

    Google Scholar 

  51. Escobar, S.: Implementing Natural Rewriting and Narrowing Efficiently. In: Kameyama, Y., Stuckey, P.J. (eds.) FLOPS 2004. LNCS, vol. 2998, pp. 147–162. Springer, Heidelberg (2004)

    Chapter  Google Scholar 

  52. Escobar, S., Meseguer, J., Thati, P.: Narrowing adn Rewriting Logic: from Foundations to Applications. Electronic Notes in Theoretical Computer Science 177, 5–33 (2007)

    Article  MATH  Google Scholar 

  53. España, S., Estruch, V.: A Memoizing Semantics for Functional Logic Languages. In: Schmidt, D. (ed.) ESOP 2004. LNCS, vol. 2986, pp. 109–123. Springer, Heidelberg (2004)

    Chapter  Google Scholar 

  54. Fernández, A.J., Hortalá-González, T., Sáenz-Pérez, F.: Solving Combinatorial Problems with a Constraint Functional Logic Language. In: Dahl, V. (ed.) PADL 2003. LNCS, vol. 2562, pp. 320–338. Springer, Heidelberg (2002)

    Chapter  Google Scholar 

  55. Fernández, A.J., Hortalá-González, M.T., Sáenz-Pérez, F., del Vado-Vírseda, R.: Constraint Functional Logic Programming over Finite Domains. Theory and Practice of Logic Programming 7(5), 537–582 (2007)

    Article  MathSciNet  MATH  Google Scholar 

  56. Ferri-Ramírez, C., Hernández-Orallo, J., Ramírez-Quintana, M.J.: Incremental Learning of Functional Logic Programs. In: Kuchen, H., Ueda, K. (eds.) FLOPS 2001. LNCS, vol. 2024, pp. 233–247. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  57. Fischer, S.: A Functional Logic Database Library. In: Proc. of the ACM SIGPLAN 2005 Workshop on Curry and Functional Logic Programming (WCFLP 2005), pp. 54–59. ACM Press (2005)

    Google Scholar 

  58. Fribourg, L.: SLOG: A Logic Programming Language Interpreter Based on Clausal Superposition and Rewriting. In: Proc. IEEE Internat. Symposium on Logic Programming, Boston, pp. 172–184 (1985)

    Google Scholar 

  59. García de la Banda, M.J., Demoen, B., Marriott, K., Stuckey, P.J.: To the Gates of HAL: A HAL Tutorial. In: Hu, Z., Rodríguez-Artalejo, M. (eds.) FLOPS 2002. LNCS, vol. 2441, pp. 47–66. Springer, Heidelberg (2002)

    Chapter  Google Scholar 

  60. Giovannetti, E., Levi, G., Moiso, C., Palamidessi, C.: Kernel LEAF: A Logic plus Functional Language. Journal of Computer and System Sciences 42(2), 139–185 (1991)

    Article  MATH  Google Scholar 

  61. Gonzáles-Moreno, J.C., Hortalá-González, M.T., Rodríguez-Artalejo, M.: Polymorphic Types in Functional Logic Programming. Journal of Functional and Logic Programming 2001(1) (2001)

    Google Scholar 

  62. González-Moreno, J.C., Hortalá-González, M.T., López-Fraguas, F.J., Rodríguez-Artalejo, M.: An approach to declarative programming based on a rewriting logic. Journal of Logic Programming 40, 47–87 (1999)

    Article  MathSciNet  MATH  Google Scholar 

  63. González-Moreno, J.C., Hortalá-González, M.T., Rodríguez-Artalejo, M.: A Higher Order Rewriting Logic for Functional Logic Programming. In: Proc. of the Fourteenth International Conference on Logic Programming (ICLP 1997), pp. 153–167. MIT Press (1997)

    Google Scholar 

  64. Habel, A., Plump, D.: Term Graph Narrowing. Mathematical Structures in Computer Science 6(6), 649–676 (1996)

    MathSciNet  MATH  Google Scholar 

  65. Hanus, M.: Compiling Logic Programs with Equality. In: Deransart, P., Małuszyński, J. (eds.) PLILP 1990. LNCS, vol. 456, pp. 387–401. Springer, Heidelberg (1990)

    Chapter  Google Scholar 

  66. Hanus, M.: The Integration of Functions into Logic Programming: From Theory to Practice. Journal of Logic Programming 19&20, 583–628 (1994)

    Google Scholar 

  67. Hanus, M.: Analysis of Residuating Logic Programs. Journal of Logic Programming 24(3), 161–199 (1995)

    Article  MathSciNet  MATH  Google Scholar 

  68. Hanus, M.: Efficient Translation of Lazy Functional Logic Programs into Prolog. In: Proietti, M. (ed.) LOPSTR 1995. LNCS, vol. 1048, pp. 252–266. Springer, Heidelberg (1996)

    Chapter  Google Scholar 

  69. Hanus, M.: A Unified Computation Model for Functional and Logic Programming. In: Proc. of the 24th ACM Symposium on Principles of Programming Languages (Paris), pp. 80–93 (1997)

    Google Scholar 

  70. Hanus, M.: Distributed Programming in a Multi-Paradigm Declarative Language. In: Nadathur, G. (ed.) PPDP 1999. LNCS, vol. 1702, pp. 376–395. Springer, Heidelberg (1999)

    Chapter  Google Scholar 

  71. Hanus, M.: A Functional Logic Programming Approach to Graphical User Interfaces. In: Pontelli, E., Santos Costa, V. (eds.) PADL 2000. LNCS, vol. 1753, pp. 47–62. Springer, Heidelberg (2000)

    Chapter  Google Scholar 

  72. Hanus, M.: High-Level Server Side Web Scripting in Curry. In: Ramakrishnan, I.V. (ed.) PADL 2001. LNCS, vol. 1990, pp. 76–92. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  73. Hanus, M.: Reduction Strategies for Declarative Programming. Electronic Notes in Theoretical Computer Science 57 (2001)

    Google Scholar 

  74. Hanus, M.: CurryDoc: A Documentation Tool for Declarative Programs. In: Proc. 11th International Workshop on Functional and (Constraint) Logic Programming (WFLP 2002), Research Report UDMI/18/2002/RR, pp. 225–228, University of Udine (2002)

    Google Scholar 

  75. Hanus, M.: Dynamic Predicates in Functional Logic Programs. Journal of Functional and Logic Programming 2004(5) (2004)

    Google Scholar 

  76. Hanus, M.: A Generic Analysis Environment for Declarative Programs. In: Proc. of the ACM SIGPLAN 2005 Workshop on Curry and Functional Logic Programming (WCFLP 2005), pp. 43–48. ACM Press (2005)

    Google Scholar 

  77. Hanus, M.: Type-Oriented Construction of Web User Interfaces. In: Proceedings of the 8th ACM SIGPLAN International Conference on Principles and Practice of Declarative Programming (PPDP 2006), pp. 27–38. ACM Press (2006)

    Google Scholar 

  78. Hanus, M.: Putting Declarative Programming into the Web: Translating Curry to JavaScript. In: Proceedings of the 9th ACM SIGPLAN International Conference on Principles and Practice of Declarative Programming (PPDP 2007), pp. 155–166. ACM Press (2007)

    Google Scholar 

  79. Hanus, M.: Call Pattern Analysis for Functional Logic Programs. In: Proceedings of the 10th ACM SIGPLAN International Conference on Principles and Practice of Declarative Programming (PPDP 2008), pp. 67–78. ACM Press (2008)

    Google Scholar 

  80. Hanus, M.: Declarative Processing of Semistructured Web Data. Technical Report 1103, Christian-Albrechts-Universität Kiel (2011)

    Google Scholar 

  81. Hanus, M., Antoy, S., Braßel, B., Engelke, M., Höppner, K., Koj, J., Niederau, P., Sadre, R., Steiner, F.: PAKCS: The Portland Aachen Kiel Curry System (2010), http://www.informatik.uni-kiel.de/~pakcs/

  82. Hanus, M., Höppner, K.: Programming Autonomous Robots in Curry. Electronic Notes in Theoretical Computer Science 76 (2002)

    Google Scholar 

  83. Hanus, M., Höppner, K., Huch, F.: Towards Translating Embedded Curry to C. Electronic Notes in Theoretical Computer Science 86(3) (2003)

    Google Scholar 

  84. Hanus, M., Huch, F.: An Open System to Support Web-based Learning. In: Proc. 12th International Workshop on Functional and (Constraint) Logic Programming (WFLP 2003), pp. 269–282. Technical Report DSIC-II/13/03, Universidad Politécnica de Valencia (2003)

    Google Scholar 

  85. Hanus, M., Huch, F., Niederau, P.: ObjectCurry: An Object-Oriented Extension of the Declarative Multi-Paradigm Language Curry. In: Mohnen, M., Koopman, P. (eds.) IFL 2000. LNCS, vol. 2011, pp. 89–106. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  86. Hanus, M., Koschnicke, S.: An ER-Based Framework for Declarative Web Programming. In: Carro, M., Peña, R. (eds.) PADL 2010. LNCS, vol. 5937, pp. 201–216. Springer, Heidelberg (2010)

    Chapter  Google Scholar 

  87. Hanus, M., Prehofer, C.: Higher-Order Narrowing with Definitional Trees. Journal of Functional Programming 9(1), 33–75 (1999)

    Article  MathSciNet  MATH  Google Scholar 

  88. Hanus, M., Sadre, R.: An Abstract Machine for Curry and its Concurrent Implementation in Java. Journal of Functional and Logic Programming 1999(6) (1999)

    Google Scholar 

  89. Hanus, M., Steiner, F.: Controlling Search in Declarative Programs. In: Palamidessi, C., Meinke, K., Glaser, H. (eds.) ALP 1998 and PLILP 1998. LNCS, vol. 1490, pp. 374–390. Springer, Heidelberg (1998)

    Chapter  Google Scholar 

  90. Hanus, M., Steiner, F.: Type-based Nondeterminism Checking in Functional Logic Programs. In: Proc. of the 2nd International ACM SIGPLAN Conference on Principles and Practice of Declarative Programming (PPDP 2000), pp. 202–213. ACM Press (2000)

    Google Scholar 

  91. Hanus, M., Zartmann, F.: Mode Analysis of Functional Logic Programs. In: LeCharlier, B. (ed.) SAS 1994. LNCS, vol. 864, pp. 26–42. Springer, Heidelberg (1994)

    Chapter  Google Scholar 

  92. Hanus, M. (ed.): Curry: An Integrated Functional Logic Language (2011), http://www.curry-language.org

  93. Hölldobler, S.: Foundations of Equational Logic Programming. In: Hölldobler, S. (ed.) Foundations of Equational Logic Programming. LNCS, vol. 353, Springer, Heidelberg (1989)

    Chapter  Google Scholar 

  94. Hussmann, H.: Nondeterministic Algebraic Specifications and Nonconfluent Term Rewriting. Journal of Logic Programming 12, 237–255 (1992)

    Article  MathSciNet  MATH  Google Scholar 

  95. Ida, T., Nakahara, K.: Leftmost outside-in narrowing calculi. Journal of Functional Programming 7(2), 129–161 (1997)

    Article  MathSciNet  MATH  Google Scholar 

  96. Jiménez-Martin, J.A., Marino-Carballo, J., Moreno-Navarro, J.J.: Efficient Compilation of Lazy Narrowing into Prolog. In: Proc. Int. Workshop on Logic Program Synthesis and Transformation (LOPSTR 1992). Springer Workshops in Computing Series, pp. 253–270 (1992)

    Google Scholar 

  97. Julián Iranzo, P., Villamizar Lamus, C.: Analysing Definitional Trees: Looking for Determinism. In: Kameyama, Y., Stuckey, P.J. (eds.) FLOPS 2004. LNCS, vol. 2998, pp. 55–69. Springer, Heidelberg (2004)

    Chapter  Google Scholar 

  98. Launchbury, J.: A Natural Semantics for Lazy Evaluation. In: Proc. 20th ACM Symposium on Principles of Programming Languages (POPL 1993), pp. 144–154. ACM Press (1993)

    Google Scholar 

  99. Lloyd, J.: Programming in an Integrated Functional and Logic Language. Journal of Functional and Logic Programming (3), 1–49 (1999)

    Google Scholar 

  100. Loogen, R., López Fraguas, F., Rodríguez Artalejo, M.: A Demand Driven Computation Strategy for Lazy Narrowing. In: Penjam, J., Bruynooghe, M. (eds.) PLILP 1993. LNCS, vol. 714, pp. 184–200. Springer, Heidelberg (1993)

    Google Scholar 

  101. Fraguas, F.J.L., Hernández, J.S.: TOY: A Multiparadigm Declarative System. In: Narendran, P., Rusinowitch, M. (eds.) RTA 1999. LNCS, vol. 1631, pp. 244–247. Springer, Heidelberg (1999)

    Chapter  Google Scholar 

  102. López-Fraguas, F.J., Rodríguez-Artalejo, M., del Vado Virseda, R.: A lazy narrowing calculus for declarative constraint programming. In: Proceedings of the 6th International ACM SIGPLAN Conference on Principles and Practice of Declarative Programming, pp. 43–54. ACM Press (2004)

    Google Scholar 

  103. López-Fraguas, F.J., Rodríguez-Hortalá, J., Sánchez-Hernández, J.: A Simple Rewrite Notion for Call-time Choice Semantics. In: Proceedings of the 9th ACM SIGPLAN International Conference on Principles and Practice of Declarative Programming (PPDP 2007), pp. 197–208. ACM Press (2007)

    Google Scholar 

  104. López-Fraguas, F.J., Sánchez-Hernández, J.: A Proof Theoretic Approach to Failure in Functional Logic Programming. Theory and Practice of Logic Programming 4(1), 41–74 (2004)

    Article  MathSciNet  MATH  Google Scholar 

  105. Lux, W.: Implementing Encapsulated Search for a Lazy Functional Logic Language. In: Middeldorp, A., Sato, T. (eds.) FLOPS 1999. LNCS, vol. 1722, pp. 100–113. Springer, Heidelberg (1999)

    Chapter  Google Scholar 

  106. Lux, W.: Adding Linear Constraints over Real Numbers to Curry. In: Kuchen, H., Ueda, K. (eds.) FLOPS 2001. LNCS, vol. 2024, pp. 185–200. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  107. Middeldorp, A., Okui, S., Ida, T.: Lazy Narrowing: Strong Completeness and Eager Variable Elimination. Theoretical Computer Science 2(1,2), 95–130 (1996)

    Article  MathSciNet  MATH  Google Scholar 

  108. Moreno-Navarro, J.J.: Default Rules: An Extension of Constructive Negation for Narrowing-based Languages. In: Proc. Eleventh International Conference on Logic Programming, pp. 535–549. MIT Press (1994)

    Google Scholar 

  109. Moreno-Navarro, J.J., Rodríguez-Artalejo, M.: Logic Programming with Functions and Predicates: The Language BABEL. Journal of Logic Programming 12, 191–223 (1992)

    Article  MATH  Google Scholar 

  110. Naish, L.: Adding Equations to NU-Prolog. In: Małuszyński, J., Wirsing, M. (eds.) PLILP 1991. LNCS, vol. 528, pp. 15–26. Springer, Heidelberg (1991)

    Chapter  Google Scholar 

  111. Nakahara, K., Middeldorp, A., Ida, T.: A Complete Narrowing Calculus for Higher-Order Functional Logic Programming. In: Swierstra, S.D. (ed.) PLILP 1995. LNCS, vol. 982, pp. 97–114. Springer, Heidelberg (1995)

    Chapter  Google Scholar 

  112. Nilsson, H., Fritzson, P.: Algorithmic debugging for lazy functional languages. Journal of Functional Programming 4(3), 337–370 (1994)

    Article  Google Scholar 

  113. Ochoa, C., Silva, J., Vidal, G.: Dynamic Slicing Based on Redex Trails. In: Proc. of the ACM SIGPLAN 2004 Symposium on Partial Evaluation and Program Manipulation (PEPM 2004), pp. 123–134. ACM Press (2004)

    Google Scholar 

  114. O’Donnell, M.J. (ed.): Computing in Systems Described by Equations. LNCS, vol. 58. Springer, Heidelberg (1977)

    MATH  Google Scholar 

  115. O’Donnell, M.J.: Equational Logic as a Programming Language. MIT Press (1985)

    Google Scholar 

  116. Padawitz, P.: Computing in Horn Clause Theories. EATCS Monographs on Theoretical Computer Science, vol. 16. Springer (1988)

    Google Scholar 

  117. Peyton Jones, S. (ed.): Haskell 98 Language and Libraries—The Revised Report. Cambridge University Press (2003)

    Google Scholar 

  118. Reynolds, J.C.: Definitional Interpreters for Higher-Order Programming Languages. In: Proceedings of the ACM Annual Conference, pp. 717–740. ACM Press (1972)

    Google Scholar 

  119. Rodríguez-Artalejo, M.: Functional and Constraint Logic Programming. In: Comon, H., Marché, C., Treinen, R. (eds.) CCL 1999. LNCS, vol. 2002, pp. 202–270. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  120. Sánchez-Hernández, J.: Constructive Failure in Functional-Logic Programming: From Theory to Implementation. Journal of Universal Computer Science 12(11), 1574–1593 (2006)

    Google Scholar 

  121. Saraswat, V.A.: Concurrent Constraint Programming. MIT Press (1993)

    Google Scholar 

  122. Sekar, R.C., Ramakrishnan, I.V.: Programming in Equational Logic: Beyond Strong Sequentiality. Information and Computation 104(1), 78–109 (1993)

    Article  MathSciNet  MATH  Google Scholar 

  123. Shapiro, E.: Algorithmic Program Debugging. MIT Press, Cambridge (1983)

    MATH  Google Scholar 

  124. Shapiro, E., Takeuchi, A.: Object Oriented Programming in Concurrent Prolog. In: Shapiro, E. (ed.) Concurrent Prolog: Collected Papers, vol. 2, pp. 251–273. MIT Press (1987)

    Google Scholar 

  125. Slagle, J.R.: Automated Theorem-Proving for Theories with Simplifiers, Commutativity, and Associativity. Journal of the ACM 21(4), 622–642 (1974)

    Article  MathSciNet  MATH  Google Scholar 

  126. Smolka, G.: The Oz Programming Model. In: van Leeuwen, J. (ed.) Computer Science Today. LNCS, vol. 1000, pp. 324–343. Springer, Heidelberg (1995)

    Chapter  Google Scholar 

  127. Somogyi, Z., Henderson, F., Conway, T.: The execution algorithm of Mercury, an efficient purely declarative logic programming language. Journal of Logic Programming 29(1-3), 17–64 (1996)

    Article  MATH  Google Scholar 

  128. Van Roy, P., Haridi, S.: Concepts, Techniques, and Models of Computer Programming. MIT Press (2004)

    Google Scholar 

  129. Wadler, P.: Efficient Compilation of Pattern-Matching. In: Peyton Jones, S.L. (ed.) The Implementation of Functional Programming Languages, pp. 78–103. Prentice Hall (1987)

    Google Scholar 

  130. Wadler, P.: How to Declare an Imperative. ACM Computing Surveys 29(3), 240–263 (1997)

    Article  Google Scholar 

  131. Warren, D.H.D.: Higher-order extensions to Prolog: are they needed? In: Machine Intelligence, vol. 10, pp. 441–454 (1982)

    Google Scholar 

  132. Zartmann, F.: Denotational Abstract Interpretation of Functional Logic Programs. In: Van Hentenryck, P. (ed.) SAS 1997. LNCS, vol. 1302, pp. 141–156. Springer, Heidelberg (1997)

    Chapter  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2013 Springer-Verlag Berlin Heidelberg

About this chapter

Cite this chapter

Hanus, M. (2013). Functional Logic Programming: From Theory to Curry. In: Voronkov, A., Weidenbach, C. (eds) Programming Logics. Lecture Notes in Computer Science, vol 7797. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-37651-1_6

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-37651-1_6

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-37650-4

  • Online ISBN: 978-3-642-37651-1

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics