FUNCTIONAL AND LOGIC PROGRAMMING
Code: MA517 | L-T-P-C: 3-0-0-6
Prerequisites: MA501 and MA511; or equivalent
Functional programming: functions as first class objects, laziness, data-types and pattern matching, classes and overloading, side-effects, description in languages like ML or Haskell; Lambda calculus: syntax, conversions, normal forms, Church-Rosser theorem, combinators; Implementation issues: graph reduction; Logic programming: logic and reasoning, logic programs, Prolog syntax, Horn clauses, resolution-refutation, constraint logic programming.
Texts:
- S. Thompson, Haskell: The Craft of Functional Programming, 2nd Edition, Addison- Wesley, 1999.
- S. L. Peyton Jones, The Implementation of Functional Programming Languages, Prentice Hall, International Series in Computer Science, 1987.
- L. Stirling and E. Shapiro, The Art of Prolog: Advanced Programming Techniques, 2nd Edition, MIT Press, 1994.
References:
- C. Reade, Elements of Functional Programming, Addison-Wesley, 1989.
- H. Barendregt, The Lambda Calculus: Its Syntax and Semantics, North Holland, 1984.
- J. W. Lloyd, Foundations of Logic Programming, Springer Verlag, 1987.