The essence of functional programming
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The essence of compiling with continuations
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
A natural semantics for lazy evaluation
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Theory and art of semantics-directed program execution monitoring
Theory and art of semantics-directed program execution monitoring
A generic account of continuation-passing styles
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Reuse by Program Transformation
SFP '99 Selected papers from the 1st Scottish Functional Programming Workshop (SFP99)
HsDebug: debugging lazy programs by not being lazy
Haskell '03 Proceedings of the 2003 ACM SIGPLAN workshop on Haskell
Monadification of functional programs
Science of Computer Programming - Special issue on program transformation
Aspectual Caml: an aspect-oriented functional language
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Type-directed weaving of aspects for higher-order functional languages
Proceedings of the 2006 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
On the relation of aspects and monads
Proceedings of the 6th workshop on Foundations of aspect-oriented languages
AspectML: A polymorphic aspect-oriented functional programming language
ACM Transactions on Programming Languages and Systems (TOPLAS)
A Compilation Model for Aspect-Oriented Polymorphically Typed Functional Languages
SAS '07 Proceedings of the 14th international Symposium on Static Analysis
Purely functional lazy non-deterministic programming
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
What does aspect-oriented programming mean for functional programmers?
Proceedings of the 2009 ACM SIGPLAN workshop on Generic programming
EffectiveAdvice: disciplined advice with explicit effects
Proceedings of the 9th International Conference on Aspect-Oriented Software Development
Hi-index | 0.00 |
Many side-effecting programming activities, such as profiling and tracing, can be formulated as crosscutting concerns and be framed as side-effecting aspects in the aspect-oriented programming paradigm. The benefit gained from this separation of concerns is particularly evident in purely functional programming, as adding such aspects using techniques such as monadification will generally lead to crosscutting changes. This paper presents an approach to provide side-effecting aspects for lazy purely functional languages in a user transparent fashion. We propose a simple yet direct state manipulation construct for developing side-effecting aspects and devise a systematic monadification scheme to translate the woven code to monadic style purely functional code. Furthermore, we present a static and dynamic semantics of the aspect programs and reason about the correctness of our monadification scheme with respect to them.