skip to main content
10.1145/3477314.3506982acmconferencesArticle/Chapter ViewAbstractPublication PagessacConference Proceedingsconference-collections
research-article

Evolution of a haskell repository and its use of monads: an exploratory study of stackage

Published:06 May 2022Publication History

ABSTRACT

Package repositories for a programming language are increasingly common. A repository can keep a register of the evolution of its packages. In the programming language Haskell, with its defining characteristic monads, we can find the Stackage repository, which is a curated repository for stable Haskell packages in the Hackage repository. Despite the widespread use of Stackage in its industrial target, we are not aware of much empirical research about how this repository has evolved, including the use of monads. This paper presents an empirical study that covers the evolution of fourteen Long-Term Support (LTS) releases (period 2014 - 2020) of available packages (12.46 gigabytes), including the use of monads from the mtl package that provides the standard monad core (e.g., state, reader, continuations). To the best of our knowledge, this is the first large-scale analysis of the evolution of the Stackage repository with regard to packages used and monads. Our findings show, for example, a growing trend of packages is depending on other packages whose versions are not available in a particular release of Stackage; opening a potential stability issue. Like previous studies, these results may evidence how developers use Haskell and give guidelines to Stackage maintainers.

References

  1. Algehed, M., and Russo, A. Encoding DCC in Haskell. In Proceedings of the 2017 Workshop on Programming Languages and Analysis for Security (Dallas, USA, Oct. 2017), ACM, pp. 77--89.Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Benton, N., Hughes, J., and Moggi, E. Monads and Effects. In Applied Semantics (Caminha, Portugal, Sept. 2002), G. Barthe, P. Dybjer, L. Pinto, and J. Saraiva, Eds., pp. 42--122.Google ScholarGoogle ScholarCross RefCross Ref
  3. Bezirgiannis, N., Jeuring, J., and Leather S. Usage of Generic Programming on Hackage. In Proceedings of the 9th ACM SIGPLAN workshop on Generic programming - WGP '13 (New York, USA, 2013), p. 47.Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Chinthanet, B., Kula, R. G., McIntosh, S., Ishio, T., Ihara, A., and Matsumoto, K.. Lags in the release, adoption, and propagation of npm vulnerability fixes. Empirical Software Engineering 26, 3 (may 2021), 47.Google ScholarGoogle Scholar
  5. De Meuter, W. Monads as a theoretical foundation for aop. In International Workshop on Aspect-Oriented Programming at ECOOP (Jyvåskylå, Finland, June 1997), vol. 25, pp. 31--36.Google ScholarGoogle Scholar
  6. Decan, A., Mens, T., Claes, M., and Grosjean, P. On the Development and Distribution of R Packages. In Proceedings of the 2015 European Conference on Software Architecture Workshops (New York, NY, USA, sep 2015), ACM, pp. 1--6.Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Decan, A., Mens, T., and Constantinou, E. On the Evolution of Technical Lag in the NPM Package Dependency Network. In 2018 IEEE International Conference on Software Maintenance and Evolution (ICSME) (sep 2018), IEEE, pp. 404--414.Google ScholarGoogle Scholar
  8. Decan, A., Mens, T., and Grosjean, P. An Empirical Comparison of Dependency Network Evolution in Seven Software Packaging Ecosystems. Empirical Software Engineering 24, 1 (feb 2019), 381--416.Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Figueroa, I. A Preliminary Assessment of how Monads are Used in Haskell. In Proceedings of the 21st Brazilian Symposium on Programming Languages (New York, NY, USA, sep 2017), ACM, pp. 1--7.Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Figueroa, I., Leger, P., and Fukuda, H. Which Monads Haskell Developers Use: An Exploratory Study. Science of Computer Programming 201 (2021), 102523.Google ScholarGoogle ScholarCross RefCross Ref
  11. Gamma, E., Helm, R., Johnson, R., and Vlissides, J. Design Patterns: Elements of Reusable Object-Oriented Software. Professional Computing Series. Addison-Wesley, October 1994.Google ScholarGoogle Scholar
  12. Gonzalez-Barahona, J. M., Sherwood, P., Robles, G., and Izquierdo, D. Technical lag in software compilations: Measuring how outdated a software deployment is. In Open Source Systems: Towards Robust Practices (Buenos Aires, Argentina, May 2017), Springer International Publishing, pp. 182--192.Google ScholarGoogle ScholarCross RefCross Ref
  13. Hackage. A central package repository for Haskell, Sept. 2020. http://hackage.haskell.org. Last visited: 01/04/2021.Google ScholarGoogle Scholar
  14. Haskell. The Haskell Language, Sept. 2020. http://www.haskell.org. Last visited: 01/04/2021.Google ScholarGoogle Scholar
  15. haskell.org. Haskell Cabal, Apr. 2020. Last visited: 09/04/2021.Google ScholarGoogle Scholar
  16. Hemmati, H., Nadi, S., Baysal, O., Kononenko, O., Wang, W., Holmes, R., and Godfrey, M. W. The MSR Cookbook: Mining a Decade of Research. In Proceedings of the 10th Working Conference on Mining Software Repositories (Piscataway, NJ, USA, 2013), MSR '13, IEEE Press, pp. 343--352.Google ScholarGoogle Scholar
  17. Jaskelioff, M. Monatron: An Extensible Monad Transformer Library. Lecture Notes in Computer Science 5836 (2011), 233--248.Google ScholarGoogle ScholarCross RefCross Ref
  18. Jones, M. P. Functional programming with overloading and higher-order polymorphism. In Advanced Functional Programming, First International Spring School on Advanced Functional Programming Techniques-Tutorial Text (Båstad, Sweden, May 1995), pp. 97--136.Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Kikas, R., Gousios, G., Dumas, M., and Pfahl, D. Structure and Evolution of Package Dependency Networks. In 2017 IEEE/ACM 14th International Conference on Mining Software Repositories (MSR) (may 2017), IEEE, pp. 102--112.Google ScholarGoogle Scholar
  20. Liang, S., Hudak, P., and Jones, M. Monad transformers and modular interpreters. pp. 333--343.Google ScholarGoogle Scholar
  21. Matplotlib. Matplotlib: A Library for Creating Static, Animated, and Interactive Visualizations in Python, Apr. 2021. http://matplotlib.org. Last visited: 01/04/2021.Google ScholarGoogle Scholar
  22. Moggi, E. Computational lambda-calculus and monads. University of Edinburgh, 1988.Google ScholarGoogle Scholar
  23. Moggi, E. Notions of computation and monads. Information and Computation 93, 1 (1991), 55--92.Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Morris, J. G. Experience Report: Using Hackage to Inform Language Design. In Proceedings of the Third ACM Haskell Symposium on Haskell (2010), Haskell '10, pp. 61--66.Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. npm. Build Amazing Things, Apr. 2021. https://www.npmjs.com. Last visited: 08/04/2021.Google ScholarGoogle Scholar
  26. Pandas. A Fast, Powerful, Flexible and Easy to use Open Source Data Analysis and Manipulation Tool, Apr. 2021. https://pandas.pydata.org. Last visited: 09/04/2021.Google ScholarGoogle Scholar
  27. Plakidas, K., Schall, D., and Zdun, U. Evolution of the R Software Ecosystem: Metrics, Relationships, and their Impact on Qualities. Journal of Systems and Software 132 (oct 2017), 119--146.Google ScholarGoogle Scholar
  28. PYPI. Find, Install and Publish Python Packages with the Python Package Index, Apr. 2021. https://pypi.org. Last visited: 08/04/2021.Google ScholarGoogle Scholar
  29. Scrapy. An Open Source and Collaborative Framework for Extracting the Data you need from Websites, Apr. 2020. https://www.scrapy.org. Last visited: 09/04/2021.Google ScholarGoogle Scholar
  30. Stackage. Stackage: A Curated Repository for Stable Haskell Packages, Apr. Sept. https://www.stackage.org. Last visited: 01/04/2021.Google ScholarGoogle Scholar
  31. Tarjan, R. Depth-First Search and Linear Graph Algorithms. SIAM journal on computing 1, 2 (1972), 146--160.Google ScholarGoogle Scholar
  32. Wadler, P. Comprehending monads. In Proceedings of the 1990 ACM Conference on LISP and Functional Programming (Nice, France, June 1990), pp. 61--78.Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Wadler, P. Monads for functional programming. In International School on Advanced Functional Programming (Båstad, Sweden, May 1995), pp. 24--52.Google ScholarGoogle ScholarCross RefCross Ref

Index Terms

  1. Evolution of a haskell repository and its use of monads: an exploratory study of stackage
      Index terms have been assigned to the content through auto-classification.

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in
      • Published in

        cover image ACM Conferences
        SAC '22: Proceedings of the 37th ACM/SIGAPP Symposium on Applied Computing
        April 2022
        2099 pages
        ISBN:9781450387132
        DOI:10.1145/3477314

        Copyright © 2022 ACM

        Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 6 May 2022

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • research-article

        Acceptance Rates

        Overall Acceptance Rate1,650of6,669submissions,25%
      • Article Metrics

        • Downloads (Last 12 months)13
        • Downloads (Last 6 weeks)2

        Other Metrics

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader