This Article 
 Bibliographic References 
 Add to: 
EQL: The Language and its Implementation
June 1989 (vol. 15 no. 6)
pp. 771-779

EqL, a general-purpose language that combines the capabilities of functional and logic programming languages, is described. A program in EqL consists of a collection of conditional, pattern-directed rules, where the conditions are expressed as a conjunction of equations, and the patterns are terms built up of data-constructors and basic values. The computational paradigm in EqL is equation solving. Examples illustrating the major features of the language, nondeterminism, deferred evaluation of primitives, and logical variables are presented. The aspects of a sequential implementation for EqL, such as compile-time flattening of equations, run-time equation-delaying, and last-equation optimization, are also described.

[1] J. Backus, "Can programming be liberated from the von Neumann style? A functional style and its algebra of programs,"Commun. ACM, vol. 21, no. 8, pp. 613-641, Aug. 1978.
[2] M. Bellia and G. Levi, "The relation between logic and functional languages:A survey," J. Logic Programming, vol. 3, pp. 217-236, 1986.
[3] K. L. Clark and S. Gregory, "A first-order theory of data and programs,"Inform. Processing, pp. 939-944, 1977.
[4] D. DeGroot and G. Lindstrom,Logic Programming: Functions. Equations. and Relations. Englewood Cliffs, NJ: Prentice-Hall, 1986.
[5] N. Dershowitz and D. A. Plaisted, "Applicative programmingcumlogic programming," inProc. 1985 Symp. Logic Programming, Boston, MA, 1985, pp. 54-66.
[6] L. Fribourg, "SLOG: A logic programming language interpreter based on clausal superposition and rewriting," inProc. 1985 Symp. Logic Programming, Boston, MA, 1985, pp. 172-184.
[7] D. P. Friedman and D. S. Wise, "CONS should not evaluate its arguments," inAutomata, Languages, and Programming, S. Michaelson and R. Milner, Eds. Edinburgh: Edinburgh University Press, 1976, pp. 257-284.
[8] J. A. Goguen and J. Meseguer, "Equality, types, modules, and (why not?) generics for logic programming,"J. Logic Program., vol. 2, pp. 179-210, 1984.
[9] P. Henderson and J. H. Morris, "A lazy evaluator," inProc. 3rd POPL Symp., 1976, pp. 95-103.
[10] C. M. Hoffman and M. J. O'Donnell, "Programming with equations,"ACM Trans. Program. Lung. Syst., vol. 4, no. 1, pp. 83- 112, Jan. 1982.
[11] J. Jaffar and J-L. Lassez, "Constraint Logic Programming,"Proc. 14th ACM Symp. Principles Programming Languages, ACM, New York, 1987, pp. 111-119.
[12] B. Jayaraman, "Semantics of EqL,"IEEE Trans. Software Eng., vol. 14, pp. 472-480, Apr. 1988.
[13] B. Jayaraman and G. Gupta, "EqL user's guide," Dep. Comput. Sci., UNC--Chapel Hill, Tech. Rep. TR 87-010, May 1987, 30 pp.
[14] B. Jayaraman and F. S. K. Silbermann, "Equations, sets, and reduction semantics for functional and logic programming," in 1986ACM Conf. LISP and Functional Programming, Boston, MA, Aug. 1986, pp. 320-331.
[15] S. Johnson, "Yacc: Yet another compiler-compiler," Bell Lab., Murray Hill, NJ, Comput. Sci. Tech. Rep. 32, 1975.
[16] A. Josephson and N. Dershowitz, "An implementation of narrowing: The RITE way," inProc. IEEE Symp. Logic Programming, Salt Lake City, UT, Sept. 1986, pp. 187-197.
[17] R. A. Kowalski, "Predicate logic as a programming language," inProc. IFIP 74. Amsterdam, The Netherlands: North-Holland, 1974, pp. 556-574.
[18] M. Lesk, "Lex--A lexical analyzer generator," Bell Lab., Murray Hill, NJ, Comput. Sci. Tech. Rep. 39, 1975.
[19] J. McCarthy,et al., LISP 1.5 Programmer's Manual. Cambridge, MA: MIT Press, 1965.
[20] S. Narain, "A technique for doing lazy evaluation in logic," inProc. IEEE Int. Symp. Logic Programming, Boston, MA, July 1985, pp. 261-269.
[21] M. J. O'Donnell,Equational Logic as a Programming Language. Cambridge, MA: M.I.T. Press, 1985.
[22] F. Pereiraet al. C-Prolog User's Manual. Edinburgh: University of Edinburgh Press, Aug. 1984.
[23] S. L. Peyton Jones,The Implementation of Functional Programming Languages. Englewood Cliffs, NJ: Prentice-Hall, 1987.
[24] U. S. Reddy, "Narrowing as the operational semantics of functional languages," inProc. 1985 Symp. Logic Programming, Boston, MA, 1985, pp. 138-151.
[25] J. A. Robinson and E. E. Sibert, "LOGLISP: Motivation, design, and implementation," inLogic Programming, K. L. Clark and S.-A. Tärnlund, Eds. New York: Academic, 1982, pp. 299-313.
[26] L. Sterling and E. Shapiro,The Art of Prolog. Cambridge, MA: MIT Press, 1986.
[27] D. A. Turner, "Miranda: A nonstrict functional language with polymorphic types," inConf. Functional Program. Lang. Comput. Architecture, Nancy, France, Sept. 1985, pp. 1-16.
[28] D. H. D. Warren, "An abstract Prolog instruction set," SRI International, Menlo Park, CA, Tech. Note 309, Oct. 1983.
[29] D. H. D. Warren, "Higher-order extensions of Prolog: Are they needed?"Machine Intell., vol. 10, pp. 441-454, 1983.
[30] D. H. D. Warren, F. Pereira, and L. M. Pereira, "Prolog: The language and its implementation compared with LISP,"SIGPLAN Notices, vol. 12, no. 8, pp. 109-115, 1977.
[31] J.-H. You and P. A. Subrahmanyam, "Equational logic programming: An extension to equational programming," in13th ACM Symp. Principles of Program. Lung., St. Petersburg, FL, 1986, pp. 209- 218.

Index Terms:
conditional rules; functional programming; general-purpose language; logic programming languages; EqL; pattern-directed rules; data-constructors; basic values; computational paradigm; equation solving; nondeterminism; deferred evaluation; logical variables; sequential implementation; compile-time flattening; run-time equation-delaying; last-equation optimization; equations; functional programming; high level languages; logic programming; mathematics computing
B. Jayaraman, G. Gupta, "EQL: The Language and its Implementation," IEEE Transactions on Software Engineering, vol. 15, no. 6, pp. 771-779, June 1989, doi:10.1109/32.24730
Usage of this product signifies your acceptance of the Terms of Use.