Refactoring object-oriented frameworks
Refactoring object-oriented frameworks
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Monad transformers and modular interpreters
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Rules and strategies for transforming functional and logic programs
ACM Computing Surveys (CSUR)
Building program optimizers with rewriting strategies
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
A Transformation System for Developing Recursive Programs
Journal of the ACM (JACM)
FranTk - a declarative GUI language for Haskell
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Visitor combination and traversal control
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Typed Combinators for Generic Traversal
PADL '02 Proceedings of the 4th International Symposium on Practical Aspects of Declarative Languages
The Design of a Pretty-printing Library
Advanced Functional Programming, First International Spring School on Advanced Functional Programming Techniques-Tutorial Text
Advanced Functional Programming, Second International School-Tutorial Text
Building Program Understanding Tools Using Visitor Combinators
IWPC '02 Proceedings of the 10th International Workshop on Program Comprehension
Journal of Functional Programming
A Strafunski Application Letter
PADL '03 Proceedings of the 5th International Symposium on Practical Aspects of Declarative Languages
Tool support for refactoring functional programs
Haskell '03 Proceedings of the 2003 ACM SIGPLAN workshop on Haskell
TypeCase: a design pattern for type-indexed functions
Proceedings of the 2005 ACM SIGPLAN workshop on Haskell
Semantics and scoping of aspects in higher-order languages
Science of Computer Programming - Special issue: Foundations of aspect-oriented programming
Constructing language processors with algebra combinators
GPCE '07 Proceedings of the 6th international conference on Generative programming and component engineering
Modular and generic programming with interpreterlib
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
Hi-index | 0.00 |
We believe that design patterns can be an effective means of consolidating and communicating program construction expertise for functional programming, just as they have proven to be in object-oriented programming. The emergence of combinator libraries that develop a specific domain or programming idiom has intensified, rather than reduced, the need for design patterns.In previous work, we introduced the fundamentals and a supporting combinator library for functional strategic programming. This is an idiom for (general purpose) generic programming based on the notion of a functional strategy: a first-class generic function that can not only be applied to terms of any type, but which also allows generic traversal into subterms and can be customised with type-specific behaviour.This paper seeks to provide practising functional programmers with pragmatic guidance in crafting their own generic programs using functional strategies. To this end, we propose a novel description format for functional design patterns, and we initiate a catalogue of strategy design patterns. These design patterns aim at consolidating strategic programming expertise in accessible form.