Skip to main content

Static analysis of functional programs with logical variables

  • Functional Programming And Logic Programming
  • Conference paper
  • First Online:
Programming Languages Implementation and Logic Programming (PLILP 1988)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 348))

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.

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

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 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.

    Google Scholar 

  2. 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.

    Google Scholar 

  3. 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.

    Google Scholar 

  4. 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.

    Google Scholar 

  5. Adrienne Bloss and Paul Hudak. Variations on Strictness Analysis. In Conference on Lisp and Functional Programming, pages 132–142, ACM, Cambridge, Massachusetts, August 1986.

    Google Scholar 

  6. 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.

    Google Scholar 

  7. 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.

    Google Scholar 

  8. 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.

    Google Scholar 

  9. S. H. Danforth. Logical Variables for a Functional Language. Technical Report PP-120–85, Microelectronics and Computer Technology Corp., 1985.

    Google Scholar 

  10. 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.

    Google Scholar 

  11. 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.

    Google Scholar 

  12. 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.

    Google Scholar 

  13. Lal George. Efficient Normal Order Evaluation Through Strictness Information. MS thesis, University of Utah, March 1987.

    Google Scholar 

  14. 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.

    Google Scholar 

  15. Cordelia V. Hall and David S. Wise. Compiling Strictness Into Streams. Technical Report 209, Indiana Univ., December 1986.

    Google Scholar 

  16. 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.

    Google Scholar 

  17. J. Hughes. Strictness detection in non-flat domains. 1985. Programming Research Group, Oxford.

    Google Scholar 

  18. 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.

    Google Scholar 

  19. T. Johnsson. Efficient compilation of lazy evaluation. In Proc. Symp. on Compiler Const., ACM SIGPLAN, Montreal, 1984.

    Google Scholar 

  20. 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.

    Google Scholar 

  21. 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.

    Google Scholar 

  22. R. B. Kieburtz. Abstract Interpretations Over Infinite Domains Cannot Terminate Uniformly. February 17, 1986. Unpublished note, Dept. of Computer Science, Oregon Graduate Center.

    Google Scholar 

  23. R. B. Kieburtz and M. Napierala. A Studied Laziness — Strictness Analysis With Structured Data Types. 1985. Extended abstract, Oregon Graduate Center.

    Google Scholar 

  24. Richard B. Kieburtz. Functions + Logic in Theory and Practice. February 25, 1987. 21 pp. unpublished paper.

    Google Scholar 

  25. Richard B. Kieburtz. Semantics of a Functions + Logic Language. September 3, 1986. 17 pp. unpublished paper.

    Google Scholar 

  26. 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.

    Google Scholar 

  27. 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.

    Google Scholar 

  28. 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.

    Google Scholar 

  29. G. Lindstrom. Notes on Object Oriented Programming in FGL+LV. March 20, 1985. Unpublished working document.

    Google Scholar 

  30. G. Lindstrom. Static Evaluation of Functional Programs. In Proc. Symposium on Compiler Construction, pages 196–206, ACM SIGPLAN, Palo Alto, CA, June 1986.

    Google Scholar 

  31. 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.

    Google Scholar 

  32. Gary Lindstrom, Lal George, and Dowming Yeh. Compiling Normal Order to Fair and Incremental Persistence. August 1987. Technical summary; 12 pp.

    Google Scholar 

  33. R. Milner. A Theory of Type Polymorphism. J. of Comp. and Sys. Sci., 17(3):348–375, 1978.

    Google Scholar 

  34. 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.

    Google Scholar 

  35. R. S. Nikhil. Id World Reference Manual (for Lisp Machines). Technical Report Computation Structures Group Memo, MIT Laboratory for Computer Science, April 24, 1987.

    Google Scholar 

  36. R. S. Nikhil, K. Pingali, and Arvind. Id Nouveau. Technical Report Computation Structures Group Memo 265, MIT Laboratory for Computer Science, July 1986.

    Google Scholar 

  37. Keshav K. Pingali. Demand-Driven Evaluation on Dataflow Machines. PhD thesis, Mass. Inst. of Tech., Cambridge, Mass., May 1986.

    Google Scholar 

  38. Keshav K. Pingali. Lazy Evaluation and the Logical Variable. In Proc. Inst. on Declarative Programming, Univ. of Texas, Austin, Texas, August 24–29, 1987.

    Google Scholar 

  39. 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.

    Google Scholar 

  40. 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.

    Google Scholar 

  41. 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.

    Google Scholar 

  42. D. A. Turner. A New Implementation Technique for Applicative Languages. Software Practice and Experience, 9:31–49, 1979.

    Google Scholar 

  43. K. Ueda. Guarded Horn Clauses: A Parallel Logic Programming Language with the Concept of a Guard. Technical Report TR-208, ICOT, Tokyo, 1986.

    Google Scholar 

  44. Phil Wadler. Strictness analysis on non-flat domains (by abstract interpretation over finite domains). November 10, 1985. Unpublished note, Programming Research Group, Oxford Univ.

    Google Scholar 

  45. D. H. D. Warren. An Abstract Prolog Instruction Set. SRI Project 4776 Technical Note 309, SRI International, Menlo Park, Calif., October 1983.

    Google Scholar 

  46. S. C. Wray. A new strictness detection algorithm. In Proc. Workshop on Implementations of Functional Languages, Chalmers Univ., Aspenas, Sweden, February 1985.

    Google Scholar 

  47. Dowming Yeh. Static Evaluation of a Functional Language Through Strictness Analysis. MS thesis, University of Utah, September 1987.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

P. Deransart B. Lorho J. Małuszyński

Rights and permissions

Reprints 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

Publish with us

Policies and ethics