Debugging in applicative languages

Applicative programming languages have several properties that appear to make debugging difficult. First, the absence of assignment statements complicates the notion of changing a program while debugging. Second, the absence of imperative input and output makes it harder to obtain information about what the program is doing. Third, the presence of lazy evaluation prevents the user from knowing much about the order in which events occur. Some solutions to these problems involve nonapplicative extensions to the language. Fortunately, the same features of applicative languages that cause problems for traditional debugging also support an idiomatic applicative style of programming, and effective debugging techniques can be implemented using that style. This paper shows how to implement tracing and interactive debugging tools in a purely applicative style. This approach is more flexible, extensive and portable than debugging tools that require modification to the language implementation.

[1]  Daniel P. Friedman,et al.  An indeterminate constructor for applicative programming , 1980, POPL '80.

[2]  W. R. Stoye The implementation of functional languages using custom hardware , 1985 .

[3]  Mayer D. Schwartz,et al.  Viewing a programming environment as a single tool , 1984 .

[4]  Leon Sterling,et al.  The Art of Prolog - Advanced Programming Techniques , 1986 .

[5]  Ehud Shapiro,et al.  Algorithmic Program Debugging , 1983 .

[6]  Daniel P. Friedman,et al.  Unbounded computational structures , 1978, Softw. Pract. Exp..

[7]  C. S. Wetherell Error Data Values in the Data-Flow Language VAL , 1982, TOPL.

[8]  Daniel P. Friedman,et al.  CONS Should Not Evaluate its Arguments , 1976, ICALP.

[9]  Leon Sterling,et al.  The Art of Prolog , 1987, IEEE Expert.

[10]  Philip Wadler,et al.  Experience with an applicative string processing language , 1980, POPL '80.

[11]  Harald Wertz An integrated Lisp programming environment , 1983 .

[12]  Cordelia V. Hall,et al.  Debugging in a side effect free programming environment , 1985, ACM SIGPLAN Notices.

[13]  John T. O'Donnell,et al.  Dialogues: A basis for constructing programming environments , 1985, SLIPE.

[14]  Victor W. Marek Book review: The Art of Prolog Advanced Programming Techniques by L. Sterling and E. Shapiro (The MIT Press) , 1988, SGAR.

[15]  John Hughes,et al.  Why Functional Programming Matters , 1989, Comput. J..

[16]  D. A. Turner,et al.  A new implementation technique for applicative languages , 1979, Softw. Pract. Exp..