Abstract
It has recently been discovered by several researchers that logical variables, even under unconditional unification, can significantly increase the expressive power of functional programming languages. Capabilities added under this extension include (i) support for use before binding of variables, e.g. in constructing functionally attributed parse trees; (ii) computation by constraint intersection, e.g. polymorphic type checking; (iii) “micro object” support for object oriented programming, e.g. for direct message delivery, and (iv) monotonic refinement of complex data structures, e.g. function evaluation by graph reduction.
This research was supported in part by grant CCR-8704778 from the National Science Foundation, and by an unrestricted gift to the University of Utah from Telefonaktiebolaget LM Ericsson, Stockholm, Sweden.
Preview
Unable to display preview. Download preview PDF.
References
Arvind, Vinod Kathail, and Keshav Pingali. Sharing of Computation in Functional Language Implementations. In Proceedings of International Workshop on High-level Computer Architecture, Los Angeles, May 21–25 1984.
Arvind, R. S. Nikhil, and K. K. Pingali. I-Structures: Data Structures for Parallel Computing. In Joseph H. Fasel and Robert M. Keller, editors, Graph Reduction: Proceedings of a Workshop, pages 336–369, Springer-Verlag, 1987. Lecture Notes in Computer Science No. 279.
Göran Båge and Gary Lindstrom. Combinator Evaluation of Functional Programs with Logical Variables. Technical Report UUCS-87-027, Department of Computer Science, University of Utah, October 1987.
Göran Båge and Gary Lindstrom. Committed Choice Functional Programming. In Proc. International Conference on Fifth Generation Computer Systems, Institute for New Generation Computer Technology (ICOT), Tokyo, November 1988.
Adrienne Bloss and Paul Hudak. Variations on Strictness Analysis. In Conference on Lisp and Functional Programming, pages 132–142, ACM, Cambridge, Massachusetts, August 1986.
G. L. Burn, C. L. Hankin, and S. Abramsky. Theory and practice of strictness analysis for higher order functions. April 1985. Dept. of Computing, Imperial College of Science and Technology.
C. Clack and S. L. Peyton Jones. Generating parallelism from strictness analysis. In Prof. Conf. on Func. Prog. Lang. and Comp. Arch., IFIP, Nancy, France, September 1985. Lecture Notes in Computer Science, number 201.
C. Clack and S. L. Peyton Jones. Strictness Analysis-A Practical Approach. In Proc. Conf. on Functional Programming Languages and Computer Architectures, pages 35–49, Springer Verlag, 1985. Lecture Notes in Computer Science, number 201.
S. H. Danforth. Logical Variables for a Functional Language. Technical Report PP-120–85, Microelectronics and Computer Technology Corp., 1985.
Saumya K. Debray and David S. Warren. Automatic Mode Inference for Prolog Programs. In Robert M. Keller, editor, Symposium on Logic Programming, pages 78–88, IEEE Computer Society, Salt Lake City, September 1986.
D. DeGroot and G. Lindstrom. Logic Programming: Functions, Relations and Equations. Prentice-Hall, Englewood Cliffs, NJ, 1986. $39.95; reviews in Computing Reviews Aug. 1987, no. 8708-0643; SIGART Newsletter, July 1987, no. 101.
Jon Fairbairn and Stuart Wray. TIM: A Simple, Lazy Abstract Machine to Execute Combinators. In Proc. Conf. on Functional Programming Languages and Computer Architectures, pages 34–45, Springer Verlag, 1987. Lecture Notes in Computer Science, number 274.
Lal George. Efficient Normal Order Evaluation Through Strictness Information. MS thesis, University of Utah, March 1987.
B. Goldberg and P. Hudak. Serial Combinators: Optimal Grains of Parallelism. In Proc. Conf. on Functional Programming Languages and Computer Architectures, pages 382–399, Springer Verlag, Nancy, France, 1985. Lecture Notes in Computer Science, number 201.
Cordelia V. Hall and David S. Wise. Compiling Strictness Into Streams. Technical Report 209, Indiana Univ., December 1986.
P. Hudak and J. Young. A set-theoretic characterization of function strictness in the lambda calculus. In Proc. Workshop on Implementations of Functional Languages, Chalmers Univ., Aspenas, Sweden, February 1985.
J. Hughes. Strictness detection in non-flat domains. 1985. Programming Research Group, Oxford.
John Hughes. Super Combinators: a New Implementation Method for Applicative Languages. In Proc. Symp. on Lisp and Func. Pgmming. and Computer Architectures, pages 1–10, ACM, Pittsburgh, Pa., 1982.
T. Johnsson. Efficient compilation of lazy evaluation. In Proc. Symp. on Compiler Const., ACM SIGPLAN, Montreal, 1984.
T. Johnsson. Lambda Lifting: Transforming Programs to Recursive Equations. In J.-P. Jouannaud, editor, Proc. Symp. on Functional Programming Languages and Computer Architectures, pages 190–203, Springer-Verlag, 1985.
R. M. Keller and G. Lindstrom. Applications of Feedback in Functional Programming. In Proc. Conf. on Functional Programming Languages and Computer Architecture, pages 123–130, Portsmouth, NH, October 1981. Appeared in preliminary form as Invited Paper, Symposium on Functional Languages and Computer Architecture, Laboratory on Programming Methodology, Department of Computer Sciences, Chalmers University of Technology, Goteborg, Sweden, June 1981.
R. B. Kieburtz. Abstract Interpretations Over Infinite Domains Cannot Terminate Uniformly. February 17, 1986. Unpublished note, Dept. of Computer Science, Oregon Graduate Center.
R. B. Kieburtz and M. Napierala. A Studied Laziness — Strictness Analysis With Structured Data Types. 1985. Extended abstract, Oregon Graduate Center.
Richard B. Kieburtz. Functions + Logic in Theory and Practice. February 25, 1987. 21 pp. unpublished paper.
Richard B. Kieburtz. Semantics of a Functions + Logic Language. September 3, 1986. 17 pp. unpublished paper.
T.-M. Kuo and P. Mishra. On Strictness and its Analysis. In Proc. Symp. on Princ. of Pgmming. Lang., ACM, Munich, West Germany, March 1987.
G. Lindstrom. Functional Programming and the Logical Variable. In Proc. Symp. on Princ. of Pgmming. Lang., pages 266–280, ACM, New Orleans, January 1985. Also available as INRIA Rapport de Recherche No. 357.
G. Lindstrom. Implementing Logical Variables on a Graph Reduction Architecture. In R. M. Keller and J. Fasel, editors, Proc. Santa Fe Workshop on Graph Reduction, pages 382–400, Springer-Verlag, 1987. Lecture Notes in Computer Science 279.
G. Lindstrom. Notes on Object Oriented Programming in FGL+LV. March 20, 1985. Unpublished working document.
G. Lindstrom. Static Evaluation of Functional Programs. In Proc. Symposium on Compiler Construction, pages 196–206, ACM SIGPLAN, Palo Alto, CA, June 1986.
G. Lindstrom, L. George, and D. Yeh. Generating Efficient Code from Strictness Annotations. In TAPSOFT'87: Proc. Second International Joint Conference on Theory and Practice of Software Development, pages 140–154, Pisa, Italy, March 1987. Springer Lecture Notes in Computer Science No. 250.
Gary Lindstrom, Lal George, and Dowming Yeh. Compiling Normal Order to Fair and Incremental Persistence. August 1987. Technical summary; 12 pp.
R. Milner. A Theory of Type Polymorphism. J. of Comp. and Sys. Sci., 17(3):348–375, 1978.
Robin Milner. The Standard ML Core Language (Revised). LFCS Report ECS-LFCS-86-2, Dept. of Computer Science, Univ. of Edinburgh, Scotland, March 1986. Part I of Standard ML, by Robert Harper, David MacQueen and Robin Milner.
R. S. Nikhil. Id World Reference Manual (for Lisp Machines). Technical Report Computation Structures Group Memo, MIT Laboratory for Computer Science, April 24, 1987.
R. S. Nikhil, K. Pingali, and Arvind. Id Nouveau. Technical Report Computation Structures Group Memo 265, MIT Laboratory for Computer Science, July 1986.
Keshav K. Pingali. Demand-Driven Evaluation on Dataflow Machines. PhD thesis, Mass. Inst. of Tech., Cambridge, Mass., May 1986.
Keshav K. Pingali. Lazy Evaluation and the Logical Variable. In Proc. Inst. on Declarative Programming, Univ. of Texas, Austin, Texas, August 24–29, 1987.
U.S. Reddy. On the Relationship Between Functional and Logic Languages. In D. DeGroot and G. Lindstrom, editors, Logic Programming: Functions, Relations, and Equations, Prentice Hall, 1986.
Mary Sheeran. Designing Regular Array Architectures Using Higher Order Functions. In Proc. Conf. on Functional Programming Languages and Computer Architectures, pages 220–237, Springer Verlag, Nancy, France, 1985. Lecture Notes in Computer Science, number 201.
Stephen Taylor, Shmuel Safra, and Ehud Shapiro. A Parallel Implementation of Flat Concurrent Prolog. International Journal of Parallel Programming, 15(3):245–275, June 1986.
D. A. Turner. A New Implementation Technique for Applicative Languages. Software Practice and Experience, 9:31–49, 1979.
K. Ueda. Guarded Horn Clauses: A Parallel Logic Programming Language with the Concept of a Guard. Technical Report TR-208, ICOT, Tokyo, 1986.
Phil Wadler. Strictness analysis on non-flat domains (by abstract interpretation over finite domains). November 10, 1985. Unpublished note, Programming Research Group, Oxford Univ.
D. H. D. Warren. An Abstract Prolog Instruction Set. SRI Project 4776 Technical Note 309, SRI International, Menlo Park, Calif., October 1983.
S. C. Wray. A new strictness detection algorithm. In Proc. Workshop on Implementations of Functional Languages, Chalmers Univ., Aspenas, Sweden, February 1985.
Dowming Yeh. Static Evaluation of a Functional Language Through Strictness Analysis. MS thesis, University of Utah, September 1987.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1989 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Lindstrom, G. (1989). Static analysis of functional programs with logical variables. In: Deransart, P., Lorho, B., Małuszyński, J. (eds) Programming Languages Implementation and Logic Programming. PLILP 1988. Lecture Notes in Computer Science, vol 348. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-50820-1_37
Download citation
DOI: https://doi.org/10.1007/3-540-50820-1_37
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-50820-5
Online ISBN: 978-3-540-46092-3
eBook Packages: Springer Book Archive