PolyP—a polytypic programming language extension
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Template meta-programming for Haskell
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
Type Classes with Functional Dependencies
ESOP '00 Proceedings of the 9th European Symposium on Programming Languages and Systems
A Generic Programming Extension for Clean
IFL '02 Selected Papers from the 13th International Workshop on Implementation of Functional Languages
MPC '02 Proceedings of the 6th International Conference on Mathematics of Program Construction
Journal of Functional Programming
Scrap more boilerplate: reflection, zips, and generalised casts
Proceedings of the ninth ACM SIGPLAN international conference on Functional programming
Type checking with open type functions
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Comparing libraries for generic programming in haskell
Proceedings of the first ACM SIGPLAN symposium on Haskell
A lightweight approach to datatype-generic rewriting
Proceedings of the ACM SIGPLAN workshop on Generic programming
Science of Computer Programming
The architecture of the Utrecht Haskell compiler
Proceedings of the 2nd ACM SIGPLAN symposium on Haskell
Proceedings of the 2010 ACM SIGPLAN workshop on Partial evaluation and program manipulation
Comparing approaches to generic programming in Haskell
SSDGP'06 Proceedings of the 2006 international conference on Datatype-generic programming
Minimally strict polymorphic functions
Proceedings of the 13th international ACM SIGPLAN symposium on Principles and practices of declarative programming
Generic programming for indexed datatypes
Proceedings of the seventh ACM SIGPLAN workshop on Generic programming
A pattern for almost homomorphic functions
Proceedings of the 8th ACM SIGPLAN workshop on Generic programming
The right kind of generic programming
Proceedings of the 8th ACM SIGPLAN workshop on Generic programming
The HERMIT in the machine: a plugin for the interactive transformation of GHC core language programs
Proceedings of the 2012 Haskell Symposium
A meta-scheduler for the par-monad: composable scheduling for the heterogeneous cloud
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
A generic abstract syntax model for embedded languages
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Algebraic data types for language-integrated queries
DDFP '13 Proceedings of the 2013 workshop on Data driven functional programming
Scala macros: let our powers combine!: on how rich syntax and static types work with metaprogramming
Proceedings of the 4th Workshop on Scala
Typed syntactic meta-programming
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Proceedings of the 9th ACM SIGPLAN workshop on Generic programming
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
Hi-index | 0.00 |
Haskell's deriving mechanism supports the automatic generation of instances for a number of functions. The Haskell 98 Report only specifies how to generate instances for the Eq, Ord, Enum, Bounded, Show, and Read classes. The description of how to generate instances is largely informal. The generation of instances imposes restrictions on the shape of datatypes, depending on the particular class to derive. As a consequence, the portability of instances across different compilers is not guaranteed. We propose a new approach to Haskell's deriving mechanism, which allows users to specify how to derive arbitrary class instances using standard datatype-generic programming techniques. Generic functions, including the methods from six standard Haskell 98 derivable classes, can be specified entirely within Haskell 98 plus multi-parameter type classes, making them lightweight and portable. We can also express Functor, Typeable, and many other derivable classes with our technique. We implemented our deriving mechanism together with many new derivable classes in the Utrecht Haskell Compiler.