skip to main content
10.1145/1291151.1291193acmconferencesArticle/Chapter ViewAbstractPublication PagesicfpConference Proceedingsconference-collections
Article

Lazy call-by-value evaluation

Published:01 October 2007Publication History

ABSTRACT

Designing debugging tools for lazy functional programming languages is a complex task which is often solved by expensive tracing of lazy computations. We present a new approach in which the information collected as a trace is reduced considerably (kilobytes instead of megabytes). The idea is to collect a kind of step information for a call-by-value interpreter, which can then efficiently reconstruct the computation for debugging/viewing tools, like declarative debugging. We show the correctness of the approach, discuss a proof-of-concept implementation with a declarative debugger as back end and present some benchmarks comparing our new approach with the Haskell debugger Hat.

References

  1. B. Braßel, S. Fischer, M. Hanus, F. Huch, and G. Vidal. Lazy Call-By-Value Evaluation. Technical report, CAU Kiel, 2007, esp. the Appendix.Google ScholarGoogle Scholar
  2. A. Gill. Debugging Haskell by Observing Intermediate Data Structures. In Proc. of the 4th Haskell Workshop. Technical report of the University of Nottingham, 2000.Google ScholarGoogle Scholar
  3. J. Launchbury. A Natural Semantics for Lazy Evaluation. In Proc. of the ACM Symp. on Principles of Programming Languages (POPL'93), pages 144--154. ACM Press, 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. H. Nilsson. Tracing Piece by Piece: Affordable Debugging for Lazy Functional Languages. In Proc. of the 1999 Int'l Conf. on Functional Programming (ICFP'99), pages 36--47. ACM Press, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. H. Nilsson. How to look busy while being as lazy as ever: the implementation of a lazy functional debugger. Journal of Functional Programming, 11 (6): 629--671, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. H. Nilsson and J. Sparud. The Evaluation Dependence Tree as a Basis for Lazy Functional Debugging. Automated Software Engineering, 4 (2): 121--150, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. S. L. Peyton Jones, editor. Haskell 98 Language and Libraries - The Revised Report. Cambridge University Press, 2003.Google ScholarGoogle Scholar
  8. B. Pope. Declarative Debugging with Buddha. In V. Vene and T. Uustalu, editors, Advanced Functional Programming, 5th International School, AFP 2004, volume 3622 of Lecture Notes in Computer Science, pages 273--308. Springer Verlag, September 2005. ISBN 3-540-28540-7. Google ScholarGoogle Scholar
  9. B. Pope and Lee Naish. Practical aspects of declarative debugging in Haskell-98. In Fifth ACM SIGPLAN Conference on Principles and Practice of Declarative Programming, pages 230--240, 2003. ISBN 1-58113-705-2. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. P. M. Sansom and S. L. Peyton Jones. Formally Based Profiling for Higher-Order Functional Languages. ACM Transactions on Programming Languages and Systems, 19 (2): 334--385, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. E. Shapiro. Algorithmic Program Debugging. MIT Press, Cambridge, Massachusetts, 1983. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. J. Sparud and C. Runciman. Complete and Partial Redex Trails of Functional Computations. In Proc. of the 9th Int'l Workshop on the Implementation of Functional Languages (IFL'97), pages 160--177. Springer LNCS 1467, 1997a. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. J. Sparud and C. Runciman. Tracing Lazy Functional Computations Using Redex Trails. In Proc. of the 9th Int'l Symp. on Programming Languages, Implementations, Logics and Programs (PLILP'97), pages 291--308. Springer LNCS 1292, 1997b. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. M. Wallace, O. Chitil, T. Brehm, and C. Runciman. Multiple-View Tracing for Haskell: a New Hat. In Proc. of the 2001 ACM SIGPLAN Haskell Workshop. Universiteit Utrecht UU-CS-2001-23, 2001.Google ScholarGoogle Scholar

Index Terms

  1. Lazy call-by-value evaluation

      Recommendations

      Comments

      Login options

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

      Sign in
      • Published in

        cover image ACM Conferences
        ICFP '07: Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
        October 2007
        346 pages
        ISBN:9781595938152
        DOI:10.1145/1291151
        • cover image ACM SIGPLAN Notices
          ACM SIGPLAN Notices  Volume 42, Issue 9
          Proceedings of the ICFP '07 conference
          September 2007
          331 pages
          ISSN:0362-1340
          EISSN:1558-1160
          DOI:10.1145/1291220
          Issue’s Table of Contents

        Copyright © 2007 ACM

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 1 October 2007

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • Article

        Acceptance Rates

        Overall Acceptance Rate333of1,064submissions,31%

        Upcoming Conference

        ICFP '23

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!