Manifest types, modules, and separate compilation
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A type-theoretic approach to higher-order modules with sharing
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ACM Transactions on Programming Languages and Systems (TOPLAS)
Theory and Practice of Object Systems - Special issue: type systems
Putting type annotations to work
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Adaptive Object-Oriented Software: The Demeter Method with Propagation Patterns
Adaptive Object-Oriented Software: The Demeter Method with Propagation Patterns
Template meta-programming for Haskell
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
A lightweight implementation of generics and dynamics
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
Scrap your boilerplate: a practical design pattern for generic programming
Proceedings of the 2003 ACM SIGPLAN international workshop on Types in languages design and implementation
Merging Monads and Folds for Functional Programming
Advanced Functional Programming, First International Spring School on Advanced Functional Programming Techniques-Tutorial Text
A denotational semantics of inheritance
A denotational semantics of inheritance
Scrap your boilerplate with class: extensible generic functions
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Scalable component abstractions
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Open data types and open functions
Proceedings of the 8th ACM SIGPLAN international conference on Principles and practice of declarative programming
Simple unification-based type inference for GADTs
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
RepLib: a library for derivable type classes
Proceedings of the 2006 ACM SIGPLAN workshop on Haskell
Design patterns as higher-order datatype-generic programs
Proceedings of the 2006 ACM SIGPLAN workshop on Generic programming
An object-oriented approach to datatype-generic programming
Proceedings of the 2006 ACM SIGPLAN workshop on Generic programming
Journal of Functional Programming
Applicative programming with effects
Journal of Functional Programming
Proceedings of the ACM SIGPLAN workshop on Generic programming
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
The essence of the iterator pattern
Journal of Functional Programming
A Type-theoretic Reconstruction of the Visitor Pattern
Electronic Notes in Theoretical Computer Science (ENTCS)
SSDGP'06 Proceedings of the 2006 international conference on Datatype-generic programming
“Scrap your boilerplate” reloaded
FLOPS'06 Proceedings of the 8th international conference on Functional and Logic Programming
Proceedings of the ACM SIGPLAN workshop on Generic programming
MODELS '09 Proceedings of the 12th International Conference on Model Driven Engineering Languages and Systems
Algorithms for traversal-based generic programming
Proceedings of the 6th ACM SIGPLAN workshop on Generic programming
Type classes as objects and implicits
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Reusable model transformations
Software and Systems Modeling (SoSyM)
Harmonizing classes, functions, tuples, and type parameters in virgil iii
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Hi-index | 0.00 |
Datatype-generic programming involves parametrization by the shape of data, in the form of type constructors such as "list of". Most approaches to datatype-generic programming are developed in the lazy functional programming language Haskell. We argue that the functional object-oriented language Scala is in many ways a better setting. Not only does Scala provide equivalents of all the necessary functional programming features (such parametric polymorphism, higher-order functions, higher-kinded type operations, and type- and constructor-classes), but it also provides the most useful features of object-oriented languages (such as subtyping, overriding, traditional single inheritance, and multiple inheritance in the form of traits). We show how this combination of features benefits datatype-generic programming, using three different approaches as illustrations.