How to make ad-hoc polymorphism less ad hoc
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A system of constructor classes: overloading and implicit higher-order polymorphism
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
On the type structure of standard ML
ACM Transactions on Programming Languages and Systems (TOPLAS)
Semantics of type classes revisited
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
Compiling polymorphism using intensional type analysis
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ACM Transactions on Programming Languages and Systems (TOPLAS)
PolyP—a polytypic programming language extension
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Guarded recursive datatype constructors
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
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
CP '99 Proceedings of the 5th International Conference on Principles and Practice of Constraint Programming
Dependency-style generic haskell
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
Proceedings of the ninth ACM SIGPLAN international conference on Functional programming
Scrap your boilerplate with class: extensible generic functions
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
ACM Transactions on Programming Languages and Systems (TOPLAS)
Extracting programs from type class proofs
Proceedings of the 8th ACM SIGPLAN international conference on Principles and practice of declarative programming
Open data types and open functions
Proceedings of the 8th ACM SIGPLAN international conference on Principles and practice of declarative programming
Polymorphic typed defunctionalization and concretization
Higher-Order and Symbolic Computation
“Scrap your boilerplate” reloaded
FLOPS'06 Proceedings of the 8th international conference on Functional and Logic Programming
Proceedings of the 2006 ACM SIGPLAN workshop on Generic programming
A comparison of c++ concepts and haskell type classes
Proceedings of the ACM SIGPLAN workshop on Generic programming
Science of Computer Programming
Scala for generic programmers: Comparing haskell and scala support for generic programming
Journal of Functional Programming
Hi-index | 0.00 |
"Generics for the Masses" (GM) and "Scrap your Boilerplate" (SYB) are generic programming approaches based on some inenious applications of Haskell type classes. To achieve modularity, the GM and SYB approach have been extended by using some experimental language extensions such as abstraction over type classes and recursive instances. Hence, the type class encodings behind the GM and SYB approach become less practical and harder to understand.We show that none of these type class features are necessary if we use the single feature of extensible superclasses, the complement of subclass extension. We formalize type classes with extensible superclasses as the combination of a previously introduced type-passing translation scheme and a general type class framework. Our results shed some new light on the use of type classes to support generic programming.