Proceedings of the 17th ACM SIGPLAN International Conference on Functional Programming 2012
DOI: 10.1145/2364527.2364579
|View full text |Cite
|
Sign up to set email alerts
|

Functional programs that explain their work

Abstract: We present techniques that enable higher-order functional computations to "explain" their work by answering questions about how parts of their output were calculated. As explanations, we consider the traditional notion of program slices, which we show can be inadequate, and propose a new notion: trace slices. We present techniques for specifying flexible and rich slicing criteria based on partial expressions, parts of which have been replaced by holes. We characterise program slices in an algorithm-independent… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
3
1
1

Citation Types

0
49
0

Year Published

2012
2012
2019
2019

Publication Types

Select...
4
4
2

Relationship

3
7

Authors

Journals

citations
Cited by 39 publications
(49 citation statements)
references
References 28 publications
0
49
0
Order By: Relevance
“…Languages like Erlang [9] and Akka [68] are attractive candidates because of their explicit communication, while aspect-oriented programming [47] could be used with a language such as Java to facilitate both trace extraction and communication interposition. Backwards slicing techniques [66] could be used to recover fine-grained lineage from the executions of programs written in a functional language.…”
Section: Languagementioning
confidence: 99%
“…Languages like Erlang [9] and Akka [68] are attractive candidates because of their explicit communication, while aspect-oriented programming [47] could be used with a language such as Java to facilitate both trace extraction and communication interposition. Backwards slicing techniques [66] could be used to recover fine-grained lineage from the executions of programs written in a functional language.…”
Section: Languagementioning
confidence: 99%
“…These uses tend to be static, rather than addressing the inverse-mapping problem in the context of system execution (see the survey by Stevens [24]). When the problem we address does arise in this area, it is typically the case that either (i) both the source and target models have implementations, so that surface-level execution traces can be obtained by evaluating in the surface language directly [21], or (ii) the surface information sought is more limited than the reduction sequence we provide (in the same ways as for debuggers for optimizing compilers, as described earlier). Applying our results to this area is future work.…”
Section: Related Workmentioning
confidence: 99%
“…These uses tend to be static, rather than addressing the inverse-mapping problem in the context of sys-tem execution (see the survey by Stevens [24]). When the problem we address does arise in this area, it is typically the case that either (i) both the source and target models have implementations, so that surface-level execution traces can be obtained by evaluating in the surface language directly [21], or (ii) the surface information sought is more limited than the reduction sequence we provide (in the same ways as for debuggers for optimizing compilers, as described earlier). Applying our results to this area is future work.…”
Section: Related Workmentioning
confidence: 99%