Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
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 2022 Publication History
  • Get Citation Alerts
  • 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.
    [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.
    [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.
    [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.
    [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.
    [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.
    [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.
    [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.
    [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.
    [10]
    Figueroa, I., Leger, P., and Fukuda, H. Which Monads Haskell Developers Use: An Exploratory Study. Science of Computer Programming 201 (2021), 102523.
    [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.
    [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.
    [13]
    Hackage. A central package repository for Haskell, Sept. 2020. http://hackage.haskell.org. Last visited: 01/04/2021.
    [14]
    Haskell. The Haskell Language, Sept. 2020. http://www.haskell.org. Last visited: 01/04/2021.
    [15]
    haskell.org. Haskell Cabal, Apr. 2020. Last visited: 09/04/2021.
    [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.
    [17]
    Jaskelioff, M. Monatron: An Extensible Monad Transformer Library. Lecture Notes in Computer Science 5836 (2011), 233--248.
    [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.
    [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.
    [20]
    Liang, S., Hudak, P., and Jones, M. Monad transformers and modular interpreters. pp. 333--343.
    [21]
    Matplotlib. Matplotlib: A Library for Creating Static, Animated, and Interactive Visualizations in Python, Apr. 2021. http://matplotlib.org. Last visited: 01/04/2021.
    [22]
    Moggi, E. Computational lambda-calculus and monads. University of Edinburgh, 1988.
    [23]
    Moggi, E. Notions of computation and monads. Information and Computation 93, 1 (1991), 55--92.
    [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.
    [25]
    npm. Build Amazing Things, Apr. 2021. https://www.npmjs.com. Last visited: 08/04/2021.
    [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.
    [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.
    [28]
    PYPI. Find, Install and Publish Python Packages with the Python Package Index, Apr. 2021. https://pypi.org. Last visited: 08/04/2021.
    [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.
    [30]
    Stackage. Stackage: A Curated Repository for Stable Haskell Packages, Apr. Sept. https://www.stackage.org. Last visited: 01/04/2021.
    [31]
    Tarjan, R. Depth-First Search and Linear Graph Algorithms. SIAM journal on computing 1, 2 (1972), 146--160.
    [32]
    Wadler, P. Comprehending monads. In Proceedings of the 1990 ACM Conference on LISP and Functional Programming (Nice, France, June 1990), pp. 61--78.
    [33]
    Wadler, P. Monads for functional programming. In International School on Advanced Functional Programming (Båstad, Sweden, May 1995), pp. 24--52.

    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

        Information & Contributors

        Information

        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
        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]

        Sponsors

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        Published: 06 May 2022

        Permissions

        Request permissions for this article.

        Check for updates

        Qualifiers

        • Research-article

        Conference

        SAC '22
        Sponsor:

        Acceptance Rates

        Overall Acceptance Rate 1,650 of 6,669 submissions, 25%

        Contributors

        Other Metrics

        Bibliometrics & Citations

        Bibliometrics

        Article Metrics

        • 0
          Total Citations
        • 31
          Total Downloads
        • Downloads (Last 12 months)16
        • Downloads (Last 6 weeks)1

        Other Metrics

        Citations

        View Options

        Get Access

        Login options

        View options

        PDF

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader

        Media

        Figures

        Other

        Tables

        Share

        Share

        Share this Publication link

        Share on social media