Abstract
Hackage, an online repository of Haskell applications and libraries, provides a hub for programmers to both release code to and use code from the larger Haskell community. We suggest that Hackage can also serve as a valuable resource for language designers: by providing a large collection of code written by different programmers and in different styles, it allows language designers to see not just how features could be used theoretically, but how they are (and are not) used in practice.
We were able to make such a use of Hackage during the design of the class system for a new Haskell-like programming language. In this paper, we sketch our language design problem, and how we used Hackage to help answer it. We describe our methodology in some detail, including both ways that it was and was not effective, and summarize our results.
Supplemental Material
- }}D. Coutts. Solving the diamond dependency problem. http://blog.well-typed.com/2008/08/solving-the-diamond-dependency-problem/, 2008. Last accessed June 8, 2010.Google Scholar
- }}D. Coutts. Regression testing with hackage. http://blog.well-typed.com/2009/03/regression-testing-with-hackage/, 2009. Last accessed June 8, 2010.Google Scholar
- }}M. P. Jones. Hugs 98. http://haskell.org/hugs.Google Scholar
- }}Lemmih, P. Martini, B. Bringert, I. Potoczny-Jones, and D. Coutts. cabal-install: The command-line interface for cabal and hackage. http://hackage.haskell.org/package/cabal-install. Last accessed June 7, 2010.Google Scholar
- }}J. G. Morris and M. P. Jones. Instance chains: Type-class programming without overlapping instances. In ICFP '10, Baltimore, MD, 2010. ACM. Google Scholar
Digital Library
- }}D. Orchard and T. Schrijvers. Haskell type constraints unleashed. Lecture Notes in Computer Science, 6009:56--71, 2010. Google Scholar
Digital Library
- }}S. Peyton Jones, M. P. Jones, and E. Meijer. Type classes: an exploration of the design space. In Haskell '97, Amsterdam, The Netherlands, 1997.Google Scholar
- }}T. Schrijvers, S. Peyton Jones, M. Chakravarty, and M. Sulzmann. Type checking with open type functions. In IFCP '08, pages 51--62, Victoria, BC, Canada, 2008. ACM. Google Scholar
Digital Library
- }}D. Stewart. Re: {Haskell-cafe} Overlapping/Incoherent instances. http://www.haskell.org/pipermail/haskell-cafe/2008-October/049155.html, 2008. Last accessed June 8, 2010.Google Scholar
- }}W. Swierstra. Data types á la carte. JFP, 8(04):423--436, 2008. Google Scholar
Digital Library
- }}The Cabal Team. #435 (ban upwardly open version ranges in dependencies on base). http://hackage.haskell.org/trac/hackage/ticket/435, 2009. Last accessed June 8, 2010.Google Scholar
- }}The GHC Team. GHC. http://haskell.org/ghc, 2009.Google Scholar
- }}R. van Dijk. Ann: Reverse dependencies in hackage (demo). http://www.haskell.org/pipermail/haskell/2009-October/021691.html, 2009. Last accessed June 8, 2010.Google Scholar
- }}P. Wadler and S. Blott. How to make ad-hoc polymorphism less ad hoc. In POPL '89, pages 60--76, Austin, Texas, United States, 1989. ACM. Google Scholar
Digital Library
- }}A. K. Wright. Simple imperative polymorphism. Lisp and Symbolic Computation, 8(4):343--355, 1995 Google Scholar
Digital Library
Index Terms
Experience report: using hackage to inform language design
Recommendations
Experience report: using hackage to inform language design
Haskell '10: Proceedings of the third ACM Haskell symposium on HaskellHackage, an online repository of Haskell applications and libraries, provides a hub for programmers to both release code to and use code from the larger Haskell community. We suggest that Hackage can also serve as a valuable resource for language ...
Layout-sensitive language extensibility with SugarHaskell
Haskell '12: Proceedings of the 2012 Haskell SymposiumProgrammers need convenient syntax to write elegant and concise programs. Consequently, the Haskell standard provides syntactic sugar for some scenarios (e.g., do notation for monadic code), authors of Haskell compilers provide syntactic sugar for more ...
Layout-sensitive language extensibility with SugarHaskell
Haskell '12Programmers need convenient syntax to write elegant and concise programs. Consequently, the Haskell standard provides syntactic sugar for some scenarios (e.g., do notation for monadic code), authors of Haskell compilers provide syntactic sugar for more ...







Comments