Notions of computation and monads
Information and Computation
Monad transformers and modular interpreters
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A study on exception detection and handling using aspect-oriented programming
Proceedings of the 22nd international conference on Software engineering
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Functional Programming with Overloading and Higher-Order Polymorphism
Advanced Functional Programming, First International Spring School on Advanced Functional Programming Techniques-Tutorial Text
Aspect-Oriented Programming is Quantification and Obliviousness
Aspect-Oriented Programming is Quantification and Obliviousness
Understanding aspects: extended abstract
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
A semantics for advice and dynamic join points in aspect-oriented programming
ACM Transactions on Programming Languages and Systems (TOPLAS)
Aspect-oriented programming and modular reasoning
Proceedings of the 27th international conference on Software engineering
Separation of concerns with procedures, annotations, advice and pointcuts
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Designing aspects for side-effect localization
Proceedings of the 2009 ACM SIGPLAN workshop on Partial evaluation and program manipulation
Feature (De)composition in Functional Programming
SC '09 Proceedings of the 8th International Conference on Software Composition
An architecture for composing embedded domain-specific languages
Proceedings of the 9th International Conference on Aspect-Oriented Software Development
EffectiveAdvice: disciplined advice with explicit effects
Proceedings of the 9th International Conference on Aspect-Oriented Software Development
A practical monadic aspect weaver
Proceedings of the eleventh workshop on Foundations of Aspect-Oriented Languages
Side-effect localization for lazy, purely functional languages via aspects
Higher-Order and Symbolic Computation
A typed monadic embedding of aspects
Proceedings of the 12th annual international conference on Aspect-oriented software development
Hi-index | 0.00 |
The relation between aspects and monads is a recurring topic in discussions in the programming language community, although it has never been elaborated whether their resemblences are only superficial, and if not, where they are rooted. The aim of this paper is to contrast both mechanisms w.r.t. their capabilities and their effects on modularity, first by looking at monads as a way to express tangling concerns in functional programming and by discussing whether they can be regarded as a form of AOP, then by taking the view that monads express concerns of computations and by analyzing the extent to which aspects are able to handle those concerns. Our results are mostly negative: monads are not capable of quantifying over points in the program execution in a declarative way, whereas aspects are not very useful in abstracting over computational capabilities.