On understanding types, data abstraction, and polymorphism
ACM Computing Surveys (CSUR) - The MIT Press scientific computation series
Abstraction and specification in program development
Abstraction and specification in program development
Why functional programming matters
The Computer Journal - Special issue on Lazy functional programming
The Ada Generic Library linear list processing packages
The Ada Generic Library linear list processing packages
Fundamentals of algebraic specification 2: module specifications and constraints
Fundamentals of algebraic specification 2: module specifications and constraints
Deforestation: transforming programs to eliminate trees
Proceedings of the Second European Symposium on Programming
Introduction to algorithms
Data structures and program transformation
Science of Computer Programming
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Notions of computation and monads
Information and Computation
AXIOM: the scientific computation system
AXIOM: the scientific computation system
Larch: languages and tools for formal specification
Larch: languages and tools for formal specification
HOPL-II The second ACM SIGPLAN conference on History of programming languages
Imperative functional programming
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
Analytical and structural polymorphism expressed using patterns over types
Analytical and structural polymorphism expressed using patterns over types
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
ESOP '94 Selected papers of ESOP '94, the 5th European symposium on Programming
Algebra of programming
PolyP—a polytypic programming language extension
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Generic programming and the STL: using and extending the C++ Standard Template Library
Generic programming and the STL: using and extending the C++ Standard Template Library
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Putting metaclasses to work: a new dimension in object-oriented programming
Putting metaclasses to work: a new dimension in object-oriented programming
Generative programming: methods, tools, and applications
Generative programming: methods, tools, and applications
A contribution to the development of ALGOL
Communications of the ACM
Revised report on the algorithm language ALGOL 60
Communications of the ACM
Fusion of recursive programs with computational effects
Theoretical Computer Science
Design and implementation of generics for the .NET Common language runtime
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Reference Manual for the ADA Programming Language
Reference Manual for the ADA Programming Language
The Definition of Standard ML
Advanced Functional Programming: First International Spring School on Advanced Functional Programming Techniques, Bastad, Sweden, May 24-30, 1995: Tutorial Text
PASCAL user manual and report
The Art of the Metaobject Protocol
The Art of the Metaobject Protocol
Fundamentals of Algebraic Specification I
Fundamentals of Algebraic Specification I
A lightweight implementation of generics and dynamics
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
Principal type-schemes for functional programs
POPL '82 Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Polytypic data conversion programs
Science of Computer Programming
Preliminary report: international algebraic language
Communications of the ACM
Fundamental Concepts in Programming Languages
Higher-Order and Symbolic Computation
The Functional Imperative: Shape!
ESOP '98 Proceedings of the 7th European Symposium on Programming: Programming Languages and Systems
Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire
Proceedings of the 5th ACM Conference on Functional Programming Languages and Computer Architecture
PLILP '96 Proceedings of the 8th International Symposium on Programming Languages: Implementations, Logics, and Programs
Elements of a Relational Theory of Datatypes
Proceedings of the IFIP TC2/WG 2.1 State-of-the-Art Report on Formal Program Development
Proceedings of the IFIP TC2/WG2.1 Working Conference on Generic Programming
Towards a theory of type structure
Programming Symposium, Proceedings Colloque sur la Programmation
Proceedings of the 1992 Glasgow Workshop on Functional Programming
Polytypic Values Possess Polykinded Types
MPC '00 Proceedings of the 5th International Conference on Mathematics of Program Construction
CTCS '97 Proceedings of the 7th International Conference on Category Theory and Computer Science
Calculating functional programs
Algebraic and coalgebraic methods in the mathematics of program construction
How to Solve the Reuse Problem? Functional Programming
ICSR '98 Proceedings of the 5th International Conference on Software Reuse
A categorical programming language
A categorical programming language
Proceedings of the ninth ACM SIGPLAN international conference on Functional programming
THEORETICAL PEARL Church numerals, twice!
Journal of Functional Programming
Active libraries and universal languages
Active libraries and universal languages
Essential language support for generic programming
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
TypeCase: a design pattern for type-indexed functions
Proceedings of the 2005 ACM SIGPLAN workshop on Haskell
A programming language
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
FUNCTIONAL PEARL: Enumerating the rationals
Journal of Functional Programming
Simple unification-based type inference for GADTs
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Proceedings of the 2006 ACM SIGPLAN workshop on Generic programming
ACM SIGPLAN International Conference on Functional Programming
Design patterns as higher-order datatype-generic programs
Proceedings of the 2006 ACM SIGPLAN workshop on Generic programming
Concepts: linguistic support for generic programming in C++
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Metamorphisms: Streaming representation-changers
Science of Computer Programming
Chapter II: Notes on data structuring
Structured programming
Applicative programming with effects
Journal of Functional Programming
A Type-theoretic Reconstruction of the Visitor Pattern
Electronic Notes in Theoretical Computer Science (ENTCS)
Combining datatypes and effects
AFP'04 Proceedings of the 5th international conference on Advanced Functional Programming
Recursion schemes for dynamic programming
MPC'06 Proceedings of the 8th international conference on Mathematics of Program Construction
The Essence of the Iterator Pattern
MSFP'06 Proceedings of the 2006 international conference on Mathematically Structured Functional Programming
TypeCase: a design pattern for type-indexed functions
Proceedings of the 2005 ACM SIGPLAN workshop on Haskell
Design patterns as higher-order datatype-generic programs
Proceedings of the 2006 ACM SIGPLAN workshop on Generic programming
Clowns to the left of me, jokers to the right (pearl): dissecting data structures
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A comparison of c++ concepts and haskell type classes
Proceedings of the ACM SIGPLAN workshop on Generic programming
MPC '08 Proceedings of the 9th international conference on Mathematics of Program Construction
A pattern for almost compositional functions
Journal of Functional Programming
Controlled evolution of adaptive programs
Proceedings of the joint international and annual ERCIM workshops on Principles of software evolution (IWPSE) and software evolution (Evol) workshops
Polytypic properties and proofs in Coq
Proceedings of the 2009 ACM SIGPLAN workshop on Generic programming
Type-safe diff for families of datatypes
Proceedings of the 2009 ACM SIGPLAN workshop on Generic programming
Proceedings of the 2010 ACM SIGPLAN workshop on Partial evaluation and program manipulation
Weaving generic programming and traversal performance
Proceedings of the 9th International Conference on Aspect-Oriented Software Development
Comparing approaches to generic programming in Haskell
SSDGP'06 Proceedings of the 2006 international conference on Datatype-generic programming
Libraries for generic programming in haskell
AFP'08 Proceedings of the 6th international conference on Advanced functional programming
Functional pearl: every bit counts
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Morphing: Structurally shaping a class by reflecting on others
ACM Transactions on Programming Languages and Systems (TOPLAS)
Formal polytypic programs and proofs
Journal of Functional Programming
Generic programming with c++ concepts and haskell type classes: A comparison
Journal of Functional Programming
Termination combinators forever
Proceedings of the 4th ACM symposium on Haskell
Generic programming for indexed datatypes
Proceedings of the seventh ACM SIGPLAN workshop on Generic programming
A functional approach to generic programming using adaptive traversals
Higher-Order and Symbolic Computation
TFP'11 Proceedings of the 12th international conference on Trends in Functional Programming
The right kind of generic programming
Proceedings of the 8th ACM SIGPLAN workshop on Generic programming
Using functional languages to facilitate C++ metaprogramming
Proceedings of the 8th ACM SIGPLAN workshop on Generic programming
Functional programming with structured graphs
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Generic representations of tree transformations
Proceedings of the 9th ACM SIGPLAN workshop on Generic programming
Type-changing rewriting and semantics-preserving transformation
Proceedings of the ACM SIGPLAN 2014 Workshop on Partial Evaluation and Program Manipulation
Hi-index | 0.00 |
Generic programming aims to increase the flexibility of programming languages, by expanding the possibilities for parametrization -- ideally, without also expanding the possibilities for uncaught errors. The term means different things to different people: parametric polymorphism, data abstraction, meta-programming, and so on. We use it to mean polytypism, that is, parametrization by the shape of data structures rather than their contents. To avoid confusion with other uses, we have coined the qualified term datatype-generic programming for this purpose. In these lecture notes, we expand on the definition of datatype-generic programming, and present some examples of datatype-generic programs. We also explore the connection with design patterns in object-oriented programming; in particular, we argue that certain design patterns are just higher-order datatype-generic programs.