skip to main content
article
Open Access

Pure versus impure Lisp

Published:03 March 1997Publication History
First page image

References

  1. BEN-AMRAM, A. M. AND GALIL, Z. 1992. On pointers versus addresses. J. ACM 39, 617-648. Google ScholarGoogle Scholar
  2. BIRD, R., JONES, a., AND DE MOOR, O. 1997. More haste, less speed: Lazy versus eager evaluation. J. Funct. Program. To be published. Google ScholarGoogle Scholar
  3. CHURCH, A. 1941. The Calculi of Lambda Conversion. Princeton University Press, Princeton, N.J. Google ScholarGoogle Scholar
  4. DRISCOLL, J. R., SARNAK, N., SLEATOR, D. D., AND TARJAN, R.E. 1986. Making data structures persistent. In the ACM Symposium on Theory of Computing. ACM, New York, 109-121. Google ScholarGoogle Scholar
  5. FISCHER, P. C., MEYER, A. R., AND ROSENBERG, A.L. 1972. Real-time simulation of multihead tape units. J. ACM 19, 590-607. Google ScholarGoogle Scholar
  6. HOOD, R. AND MELVILLE, R. 1981. Real time queue operations in pure LISP. Inf. Proc. Lett. 13, 50-54.Google ScholarGoogle Scholar
  7. JIANG, T., SEIFERAS, g. I., AND VITANYI, P. M.B. 1994. Two heads are better than two tapes. In the ACM Symposium on Theory of Computing. ACM, New York, 668-675. Google ScholarGoogle Scholar
  8. KNUTH, D.E. 1968. The Art of Computer Programming. Vol. 1, Fundamental Algorithms. Addison-Wesley, Reading, Mass. Google ScholarGoogle Scholar
  9. KOLMOGOROV, A. N. AND USPENSKI{, V.A. 1963. On the definition of an algorithm. AMS Transl. 2, 29, 217-245.Google ScholarGoogle Scholar
  10. MCCARTHY, J. 1960. Recursive functions of symbolic expressions and their computation by machine, Part I. Commun. ACM 3, 184-195. Google ScholarGoogle Scholar
  11. MCCARTHY, J. 1961. A basis for a mathematical theory of computation. In the Western Joint Computer Conference. AFIPS, 225-238.Google ScholarGoogle Scholar
  12. MCCARTHY, J., ABRAHAMS, P. W., EDWARDS, D. J., HART, T. P., AND LEVIN, M.I. 1962. Lisp 1.5 Programmer's Manual. MIT Press, Cambridge, Mass. Google ScholarGoogle Scholar
  13. MYERS, E.W. 1984. Efficient applicative data types. In Proceedings of the ACM Symposium on Principles of Programming Languages, ACM, New York, 66-75. Google ScholarGoogle Scholar
  14. PIPPENGER, N. 1996. Pure versus Impure Lisp. In Proceedings of the ACM Symposium on Principles of Programming Languages. ACM, New York, 104-109. Google ScholarGoogle Scholar
  15. SCHONHAGE, A. 1980. Storage modification machines. SIAM J. Comput. 9, 490-508.Google ScholarGoogle Scholar

Index Terms

  1. Pure versus impure Lisp

        Recommendations

        Reviews

        Zoran D. Budimac

        Pippenger compares pure to impure LISP with respect to program complexity. Impure LISP is defined as the form of LISP that has rplaca and rplacd primitives (or their equivalents) for destructive replacement of the list head and list tail with new values. The author considers only symbolic and online computations. The paper answers the question of whether every impure LISP program that transforms a word over a finite alphabet into a B oolean value can be transformed into an equivalent pure LISP program in such a way that the number of executed primitives in the pure LISP program is larger by a constant value than the number of executed primitives in the impure LISP program. The main result of the paper is stated in Theorem 1.1, which states that there is a symbolic online computation that can be performed by an impure LISP program with at most O n primitive operations for the first n outputs, but for which every pure LISP program, for some input sequences, performs at least G n log n primitive operations. G f n is a function bounded below by a positive constant multiple of f n . The paper is well written and easy to follow. Proofs of some theorems are done by a simple Scheme program, which makes the paper even more interesting.

        Access critical reviews of Computing literature here

        Become a reviewer for Computing Reviews.

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in

        Full Access

        • Published in

          cover image ACM Transactions on Programming Languages and Systems
          ACM Transactions on Programming Languages and Systems  Volume 19, Issue 2
          March 1997
          190 pages
          ISSN:0164-0925
          EISSN:1558-4593
          DOI:10.1145/244795
          Issue’s Table of Contents

          Copyright © 1997 ACM

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 3 March 1997
          Published in toplas Volume 19, Issue 2

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Qualifiers

          • article

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader