Lazy debugging of lazy functional programs
Autor: | R. M. Snyder |
---|---|
Rok vydání: | 1990 |
Předmět: |
Functional programming
Theoretical computer science Computer Networks and Communications Computer science Programming language media_common.quotation_subject computer.software_genre Theoretical Computer Science Algorithmic program debugging Debugging Hardware and Architecture Graph (abstract data type) Lazy loading Lazy evaluation Combinatory logic computer Software media_common Debugger |
Zdroj: | New Generation Computing. 8:139-161 |
ISSN: | 1882-7055 0288-3635 |
DOI: | 10.1007/bf03037471 |
Popis: | The debugging of fully lazy functional programs can require searching a very large reduction-history space containing many delayed computations. A debugger should provide a means to obtain a source level representation of the computation, which can be large, and a means to select the appropriate part of the computation to investigate, which can be difficult. A method is presented to compile functional programs to combinator code such that a source-like representation of any part of a computation graph can be efficiently reconstructed at run-time. Other less efficient methods require excessive compile-time guidance as to the specific part of the computation to be investigated. Reconstruction, forward reduction, and a history-rollback mechanism combine to make the entire source-like reduction-history space dynamically available at run-time. The deferring of debugging decisions until run-time is called lazy dubugging. Once the computation-sequence is meaningfully and efficiently available, the problem of debugging becomes that of localizing the search for the error. Some searching issues are discussed with respect to graph browsing and user-interface design. The method shows promise as a programmer tool to debug programs and to informally reason about the time and space behavior of fully lazy functional programs, a nonintuitive process due to the subtleness of sharing and delayed computations. |
Databáze: | OpenAIRE |
Externí odkaz: |