Data structures and program transformation
Science of Computer Programming
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
Template meta-programming for Haskell
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire
Proceedings of the 5th ACM Conference on Functional Programming Languages and Computer Architecture
Uniform boilerplate and list processing
Haskell '07 Proceedings of the ACM SIGPLAN workshop on Haskell workshop
Foundations for structured programming with GADTs
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Applicative programming with effects
Journal of Functional Programming
Journal of Functional Programming
Comparing libraries for generic programming in haskell
Proceedings of the first ACM SIGPLAN symposium on Haskell
Generic programming with fixed points for mutually recursive datatypes
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Complete and decidable type inference for GADTs
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Proceedings of the 6th ACM SIGPLAN workshop on Generic programming
Generic selections of subexpressions
Proceedings of the 6th ACM SIGPLAN workshop on Generic programming
Instance chains: type class programming without overlapping instances
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Categorical views on computations on trees
ICALP'07 Proceedings of the 34th international conference on Automata, Languages and Programming
Dynamic symbolic computation for domain-specific language implementation
LOPSTR'11 Proceedings of the 21st international conference on Logic-Based Program Synthesis and Transformation
A generic abstract syntax model for embedded languages
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
MPC'12 Proceedings of the 11th international conference on Mathematics of Program Construction
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Programming macro tree transducers
Proceedings of the 9th ACM SIGPLAN workshop on Generic programming
Hi-index | 0.00 |
Building on Wouter Swierstra's Data types à la carte, we present a comprehensive Haskell library of compositional data types suitable for practical applications. In this framework, data types and functions on them can be defined in a modular fashion. We extend the existing work by implementing a wide array of recursion schemes including monadic computations. Above all, we generalise recursive data types to contexts, which allow us to characterise a special yet frequent kind of catamorphisms. The thus established notion of term homomorphisms allows for flexible reuse and enables short-cut fusion style deforestation which yields considerable speedups. We demonstrate our framework in the setting of compiler construction, and moreover, we compare compositional data types with generic programming techniques and show that both are comparable in run-time performance and expressivity while our approach allows for stricter types. We substantiate this conclusion by lifting compositional data types to recursive data types and generalised algebraic data types. Lastly, we compare the run-time performance of our techniques with traditional implementations over algebraic data types. The results are surprisingly good.