{"DOI":"10.1017/s0956796800001337","abstract":"AbstractThis paper addresses the issue of analysing the run-time behaviour of lazy, higher-order functional programs. We examine the difference between the way that functional programmers and functional language implementors view program behaviour. Existing profiling techniques are discussed and a new technique is proposed which produces results that are straightforward forprogrammersto assimilate. The new technique, which we calllexical profiling, collects information about the run-time behaviour of functional programs, and reports the results with respect to the original source code rather than simply listing the actions performed at run-time. Lexical profiling complements implementation-specific profiling and is important because it provides a view of program activity which is largely independent of the underlying evaluation mechanism. Using the lexical profiler, programmers may easily relate results back to the source program. We give a full implementation of the lexical profiling technique for a sequential, interpretive graph reduction engine, and extensions for compiled and parallel graph reduction are discussed.","author":[{"family":"Clack"},{"family":"Clayman"},{"family":"Parrott"}],"id":"unknown","issue":"02","issued":{"date-parts":[[1995]]},"language":"en","page-first":"225","publisher":"Cambridge University Press (CUP)","title":"Lexical profiling: theory and practice","type":"article-journal"}