How to make ad-hoc polymorphism less ad hoc
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Compiling polymorphism using intensional type analysis
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Implicit parameters: dynamic scoping with static types
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Type-safe cast: (functional pearl)
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
QuickCheck: a lightweight tool for random testing of Haskell programs
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Types and programming languages
Types and programming languages
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Template meta-programming for Haskell
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
Testing monadic code with QuickCheck
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
Coinductive Axiomatization of Recursive Type Equality and Subtyping
TLCA '97 Proceedings of the Third International Conference on Typed Lambda Calculi and Applications
Proceedings of the IFIP TC2/WG2.1 Working Conference on Generic 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 more boilerplate: reflection, zips, and generalised casts
Proceedings of the ninth ACM SIGPLAN international conference on Functional programming
TLDI '05 Proceedings of the 2005 ACM SIGPLAN international workshop on Types in languages design and implementation
Extracting programs from type class proofs
Proceedings of the 8th ACM SIGPLAN international conference on Principles and practice of declarative programming
RepLib: a library for derivable type classes
Proceedings of the 2006 ACM SIGPLAN workshop on Haskell
A generic recursion toolbox for Haskell or: scrap your boilerplate systematically
Proceedings of the 2006 ACM SIGPLAN workshop on Haskell
Proceedings of the 2006 ACM SIGPLAN workshop on Generic programming
Context-parametric polykinded types
Proceedings of the 2006 ACM SIGPLAN workshop on Generic programming
Modular generic programming with extensible superclasses
Proceedings of the 2006 ACM SIGPLAN workshop on Generic programming
Scrap++: scrap your boilerplate in C++
Proceedings of the 2006 ACM SIGPLAN workshop on Generic programming
Journal of Functional Programming
A history of Haskell: being lazy with class
Proceedings of the third ACM SIGPLAN conference on History of programming languages
Strongly Typed Rewriting For Coupled Software Transformation
Electronic Notes in Theoretical Computer Science (ENTCS)
Uniform boilerplate and list processing
Haskell '07 Proceedings of the ACM SIGPLAN workshop on Haskell workshop
Proceedings of the ACM SIGPLAN workshop on Generic programming
Proceedings of the ACM SIGPLAN workshop on Generic programming
Bialgebra views: a way for polytypic programming to cohabit with data abstraction
Proceedings of the ACM SIGPLAN workshop on Generic programming
Science of Computer Programming
What does aspect-oriented programming mean for functional programmers?
Proceedings of the 2009 ACM SIGPLAN workshop on Generic programming
Parametric datatype-genericity
Proceedings of the 2009 ACM SIGPLAN workshop on Generic programming
Alloy: fast generic transformations for Haskell
Proceedings of the 2nd ACM SIGPLAN symposium on Haskell
Comparing approaches to generic programming in Haskell
SSDGP'06 Proceedings of the 2006 international conference on Datatype-generic programming
SSDGP'06 Proceedings of the 2006 international conference on Datatype-generic programming
A generic programming toolkit for PADS/ML: first-class upgrades for third-party developers
PADL'08 Proceedings of the 10th international conference on Practical aspects of declarative languages
Libraries for generic programming in haskell
AFP'08 Proceedings of the 6th international conference on Advanced functional programming
Type-directed weaving of aspects for polymorphically typed functional languages
Science of Computer Programming
Scrap your zippers: a generic zipper for heterogeneous types
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
Scala for generic programmers: Comparing haskell and scala support for generic programming
Journal of Functional Programming
Algebraic Specialization of Generic Functions for Recursive Types
Electronic Notes in Theoretical Computer Science (ENTCS)
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
“Scrap your boilerplate” reloaded
FLOPS'06 Proceedings of the 8th international conference on Functional and Logic Programming
TLDI '12 Proceedings of the 8th ACM SIGPLAN workshop on Types in language design and implementation
Outsidein(x) modular type inference with local assumptions
Journal of Functional Programming - Dedicated to ICFP 2009
“Scrap your boilerplate” revolutions
MPC'06 Proceedings of the 8th international conference on Mathematics of Program Construction
A functional approach to generic programming using adaptive traversals
Higher-Order and Symbolic Computation
Equality proofs and deferred type errors: a compiler pearl
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
MPC'12 Proceedings of the 11th international conference on Mathematics of Program Construction
Generic programming with adjunctions
SSGIP'10 Proceedings of the 2010 international spring school conference on Generic and Indexed Programming
Programming errors in traversal programs over structured data
Science of Computer Programming
Adjoint folds and unfolds-An extended study
Science of Computer Programming
Hi-index | 0.00 |
The 'Scrap your boilerplate' approach to generic programming allows the programmer to write generic functions that can traverse arbitrary data structures, and yet have type-specific cases. However, the original approach required all the type-specific cases to be supplied at once, when the recursive knot of generic function definition is tied. Hence, generic functions were closed. In contrast, Haskell's type classes support open, or extensible, functions that can be extended with new type-specific cases as new data types are defined. In this paper, we extend the 'Scrap your boilerplate' approach to support this open style. On the way, we demonstrate the desirability of abstraction over type classes, and the usefulness of recursive dictionarie.