Scala for generic programmers

@article{Oliveira2008ScalaFG,
  title={Scala for generic programmers},
  author={Bruno C. d. S. Oliveira and Jeremy Gibbons},
  journal={Journal of Functional Programming},
  year={2008},
  volume={20},
  pages={303 - 352}
}
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… 
Comparing Datatype Generic Libraries in Haskell 3
TLDR
This paper develops a generic programming benchmark: a set of characteristic examples testing various facets of datatype-generic programming, and implements the benchmark for ten existing Haskell generic programming libraries and presents the evaluation of the libraries.
Comparing Datatype Generic Libraries in Haskell
TLDR
This paper develops a generic programming benchmark: a set of characteristic examples testing various facets of datatype-generic programming, and implements the benchmark for ten existing Haskell generic programming libraries and presents the evaluation of the libraries.
Type classes as objects and implicits
TLDR
This paper presents a lightweight approach to type classes in object-oriented (OO) languages with generics using the CONCEPT pattern and implicits (a type-directed implicit parameter passing mechanism), making Scala ideally suited for generic programming in the large.
Generic Programming in F
TLDR
This thesis attempts to address this problem by introducing a datatype generic programming for the F# language, which is a simpler functional language designed for existing .NET programmers.
Self-Assembly: Lightweight Language Extension and Datatype Generic Programming, All-in-One!
TLDR
The key idea, inspired by existing datatype-generic programming approaches, is to provide programmers with a generic mechanism for providing automatic implementations of type classes.
Datatype generic programming in F#
TLDR
A library for datatype generic programming in F#, built on top of the .NET reflection mechanism, so that generic functions defined using this library can be called by any other language running on the .
Language Support for Generic Programming in Object-Oriented Languages: Peculiarities, Drawbacks, Ways of Improvement
TLDR
This paper analyzes language constructs for GP in seven modern object-oriented languages and demonstrates that all of these languages follow the same approach to constraining type parameters, which has a number of inevitable problems.
Algorithms for traversal-based generic programming
TLDR
An overview of the approach and a detailed account of the various algorithms involved in making traversal-based generic programming useful, safe, and efficient are given.
Evolution of Generic Programming in OOPLs
TLDR
The aim is to exhibit generic evolution among mainstream object oriented programming languages (OOPLs) in an organized way such that it appears as "one mechanism intensify other".
The implicit calculus: a new foundation for generic programming
TLDR
The implicit calculus provides a formal model of implicits, which can be used by language designers to study and inform implementations of similar mechanisms in their own languages.
...
...

References

SHOWING 1-10 OF 154 REFERENCES
Comparing libraries for generic programming in haskell
TLDR
To compare and characterise the many generic programming libraries in atyped functional language, a set of criteria is introduced and a generic programming benchmark is developed: aset of characteristic examples testing various facets of datatype-generic programming.
Generics of a higher kind
TLDR
This paper presents the design and implementation of the resulting type constructor polymorphism in Scala, and studies how this feature interacts with existing object-oriented constructs, and shows how it makes the language more expressive.
An object-oriented approach to datatype-generic programming
TLDR
This work presents an extensible library for lightweight DGP in Scala, based on an existing lightweight approach in Haskell, and discusses the challenges in developing and using the library, and explores ways to overcome them.
Derivable Type Classes
Type classes as objects and implicits
TLDR
This paper presents a lightweight approach to type classes in object-oriented (OO) languages with generics using the CONCEPT pattern and implicits (a type-directed implicit parameter passing mechanism), making Scala ideally suited for generic programming in the large.
Design patterns as higher-order datatype-generic programs
TLDR
This work argues the case by presenting higher-order datatype-generic programs capturing ORIGAMI, a small suite of patterns for recursive data structures, and claims that the languages of tomorrow will suffice; the future is not far away.
Modular generic programming with extensible superclasses
TLDR
Type classes with extensible superclasses are formalized as the combination of a previously introduced type-passing translation scheme and a general type class framework to shed some new light on the use of type classes to support generic programming.
Alloy: fast generic transformations for Haskell
TLDR
This work describes use cases for a generic system derived from work on a nanopass compiler, and detail a new generics approach (Alloy) that is developed in Haskell to allow the authors' compiler passes to traverse the abstract syntax tree quickly.
Objects to Unify Type Classes and GADTs
TLDR
An Haskell-like language with the goal of unifying type classes and generalized algebraic datatypes into a single class construct, which uses objects (instead of type class instances and data constructors) to define the values of those classes.
Parametric datatype-genericity
TLDR
This work presents a higher-order parametricity theorem for datatype-generic operators, which shows that the naturality properties arise "for free", simply from the parametrized types of the generic functions.
...
...