ABSTRACT
Generic programming language constructs, tools and libraries have been available in Haskell since the first report on the programming language Haskell. At the beginning of the 1990s generic programming techniques could be used via the deriving construct, and since then numerous generic programming libraries and tools have been developed. At the time of writing, the categories `generic' and 'generics' on Hackage, the online repository of Haskell software, contain 53 packages. Although not all of these are generic programming libraries or tools, there are many approaches to generic programming to choose from. This brief paper discusses an analysis of the usage of generic programming language constructs, tools, and libraries. We analyse how often which language constructs, tools, and libraries are used on Hackage, how often class instances are derived generically or written manually, and for some libraries, how often the functions that appear in these libraries are used.
- J. Cheney and R. Hinze. A lightweight implementation of generics and dynamics. In Haskell'02, pages 90--104, 2002. Google ScholarDigital Library
- D. Coutts. Solving the diamond dependency problem. http://www.well-typed.com/blog/12, 2008.Google Scholar
- R. Hinze. Generics for the masses. In ICFP'04, pages 236--243, 2004. Google ScholarDigital Library
- R. Hinze and J. Jeuring. Generic haskell: Applications. In Generic Programming, volume 2793 of LNCS, pages 57--96, 2003.Google Scholar
- R. Hinze and S. Peyton Jones. Derivable type classes. In Proceedings of the Fourth Haskell Workshop, 2000.Google Scholar
- R. Hinze, J. Jeuring, and A. Löh. Comparing approaches to generic programming in haskell. In Summer School on Datatype-generic programming, LNCS, pages 72--149, 2007. Google ScholarDigital Library
- P. Hudak, S. Peyton Jones, P. Wadler, B. Boutel, J. Fairbairn, J. Fasel, M. M. Guzmán, K. Hammond, J. Hughes, T. Johnsson, D. Kieburtz, R. Nikhil, W. Partain, and J. Peterson. Report on the programming language haskell: a non-strict, purely functional language version 1.2. SIGPLAN Notices, 27 (5): 1--164, 1992. Google ScholarDigital Library
- P. Jansson and J. Jeuring. PolyP -- a polytypic programming language extension. In POPL'97, pages 470--482, 1997. Google ScholarDigital Library
- J. Jeuring, S. Leather, J. P. Magalhães, and A. R. Yakushev. Libraries for generic programming in Haskell. In Advanced Functional Programming, volume 5832 of LNCS, pages 165--229, 2008. Google ScholarDigital Library
- J. Jeuring, J. P. Magalhães, and B. Heeren. Generic programming for domain reasoners. In TFP '09, pages 113--128, 2009.Google Scholar
- I. Jones, S. Peyton Jones, S. Marlow, M. Wallace, and R. Patterson. The Haskell Cabal, a common architecture for building applications and libraries, 2005.Google Scholar
- O. Kiselyov. Smash your boilerplate without class and Typeable. http://article.gmane.org/gmane.comp.lang.haskell.general/14086, 2006.Google Scholar
- R. Lämmel and S. Peyton Jones. Scrap your boilerplate: a practical design pattern for generic programming. In ICFP '03, 2003.Google Scholar
- A. Löh, J. Jeuring, T. van Noort, A. Rodriguez, D. Clarke, R. Hinze, and J. de Wit. The Generic Haskell user's guide, Version 1.80 - Emerald release. Technical Report UU-CS-2008-011, Utrecht University, 2008.Google Scholar
- J. P. Magalhães and W. B. de Haas. Functional modelling of musical harmony: an experience report. In ICFP '11, pages 156--162, 2011.Google ScholarDigital Library
- J. P. Magalhães, A. Dijkstra, J. Jeuring, and A. Löh. A generic deriving mechanism for Haskell. Haskell '10, pages 37--48, 2010.Google ScholarDigital Library
- N. Mitchell. Deriving a relationship from a single example. In AAIP '10, volume 5812 of LNCS, 2010.Google Scholar
- N. Mitchell and C. Runciman. Uniform boilerplate and list processing. In Haskell '07, pages 49--60, 2007. Google ScholarDigital Library
- J. G. Morris. Experience report: using Hackage to inform language design. In Haskell '10, pages 61--66, 2010. Google ScholarDigital Library
- U. Norell and P. Jansson. Prototyping generic programming in template haskell. In MPC '04, volume 3125 of LNCS, pages 314--333, 2004.Google Scholar
- S. Peyton Jones. Haskell 98 Language and Libraries: The Revised Report. Cambridge University Press, 2003.Google Scholar
- A. Rodriguez, J. Jeuring, P. Jansson, A. Gerdes, O. Kiselyov, and B. C. d. S. Oliveira. Comparing libraries for generic programming in Haskell. In Haskell '08, pages 111--122, 2008. Google ScholarDigital Library
- S. Weirich. RepLib: a library for derivable type classes. In Haskell '06, pages 1--12, 2006. Google ScholarDigital Library
- N. Winstanley and J. Meacham. DrIFT user guide, 2006. http://repetae.net/ john/computer/haskell/DrIFT/.Google Scholar
Index Terms
- Usage of generic programming on hackage: experience report
Recommendations
A comparative study of language support for generic programming
OOPSLA '03: Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applicationsMany modern programming languages support basic generic programming, sufficient to implement type-safe polymorphic containers. Some languages have moved beyond this basic support to a broader, more powerful interpretation of generic programming, and ...
A comparative study of language support for generic programming
Special Issue: Proceedings of the OOPSLA '03 conferenceMany modern programming languages support basic generic programming, sufficient to implement type-safe polymorphic containers. Some languages have moved beyond this basic support to a broader, more powerful interpretation of generic programming, and ...
Generic programming in Fortran
PEPM '06: Proceedings of the 2006 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulationParametric Fortran is an extension of Fortran that supports the construction of generic programs by allowing the parameterization of arbitrary Fortran constructs. A parameterized Fortran program can be translated into a regular Fortran program guided by ...
Comments